这个问题可能没有明确的答案,所以如果它被认为是主观的,让我们说坏,请随时关闭它。
基本上我正在开发一个非常大的Web应用程序(PHP),它使用CakePHP。现在它正在开发中,数据库中的一些东西非常复杂,因此需要进行大量查询才能显示页面(大约7-25个查询)。
由于这可能是一个大规模的,我想知道什么是最大,也就是说,点了一个点,表明“你可能正在做某事错误,应该优化“,每页应该完成的SQL查询数量。我现在设置了一个非常简单的缓存系统,它将单个用户运行的查询减少到大约5秒,持续15秒。
经常运行25个查询?我应该停止开发(我有足够的时间)一段时间并重构代码,删除未使用的SQL查询,并花时间来提高这部分的性能吗?
这可能听起来有些令人困惑,所以重新开始:每页运行的查询数量是否存在事实上的最大值,而不会破坏服务器(即共享托管环境)?
感谢。
答案 0 :(得分:8)
最重要的不是数字,而是查询的费用......
运行100 SELECT name FROM foo WHERE id = 1 LIMIT 1
将比运行以下1项更好:
SELECT *
FROM foo AS a
JOIN bar AS b
JOIN car AS c
WHERE a.col LIKE '%f%' OR b.col LIKE '%b%' OR c.col LIKE '%b%'
所以不要担心这个数字,除非它是荒谬的(超过100是高。几千是荒谬的)...不要忘记你可以启用MySQL的查询缓存...所以即使你打了很多每秒查询,只要没有大量的更新,大多数都会直接缓存结果..
答案 1 :(得分:7)
数据库的总命中数也与页面查看次数成正比。因此,如果每页的页面查看*查询超过数据库的容量,那么您就遇到了问题。显然,不同站点之间的流量变化很大,数据库容量也是如此,因此实际上不可能有一个数字。
答案 2 :(得分:4)
正如递归提到的,没有神奇的数字。变量太多了。比如你的数据库服务器规格。显然,服务器越好,您可以运行的查询就越多。
答案 3 :(得分:0)
一种可能更简单,几乎同样有效的优化方法是批量查询。这样,您可以减少到数据库服务器的往返次数,同时保持现有逻辑(大部分)完好无损。