我正在研究使用CMS并在vBulletin 4.0上进行评论;在一个页面加载时使用大约200个查询。
我当时很担心。
进一步的研究将我带到其他网站,看看他们使用了多少查询,我发现一些论坛软件,如Invision Power Board和PHPBB,使用的搜索量低至6或8。
目前,我的网站使用了大约25到40个查询。
我应该担心吗?
答案 0 :(得分:11)
不要担心查询次数。
担心:
澄清:
SQL过于复杂可能来自太多的查询或一些非常复杂的查询(大量的连接和子查询等)。
答案 1 :(得分:9)
如果你的目标是什么,那么每次HTTP命中就要瞄准3次读取和1次写入。
虽然这些是任意数字(不知何故,它们实际上来自Advanced PHP Programming),但他们强调了这些想法:
还记得并非所有读取都是相同的:3个读取应该是高度优化的读取,而不是具有4-5个外部连接的全表扫描...
答案 2 :(得分:0)
它取决于。命中数据越多,负载就越多。只是要寻找一些东西。如果需要显示来自多个不同表的值,则可能需要运行多个查询。如果你只有几个用户并且你知道你不会拥有大量数据,那可能无关紧要。
需要考虑的一些事项:
如果您的网页过多地访问数据库太慢,请查看memcached。
答案 3 :(得分:0)
您可能会尝试重新分解代码,以减少到SQL Server的往返次数。一种方法是使用缓存。例如,经常需要的数据可以在应用程序启动时加载,然后在需要时从缓存中获取。
另一种方法可能是将数据去规范化为专门设计的表格,以便在少量查询中为您提供网站所需的数据。
答案 4 :(得分:0)
还要考虑是否可以缓存其中一些查询(例如,用于填充查找值的查询)。这样,如果在多个页面上调用相同的查询,或者每次从一组记录移动到另一组记录,则不会再次命中数据库以执行相同的查询。我记得有一次,当我们运行的存储过程非常快时,我们试图确定网站为什么这么慢,并且发现使用分析器,当它不需要时,它一遍又一遍地被发送。 / p>
答案 5 :(得分:0)
您可以使用vbulletin缓存所有这些查询。如果你看一下pbnation.com,他们每天有超过一百万的访问者,每页加载只有大约3-4个查询。其他所有内容都缓存在memcached中。