使用PHP优化MySQL查询

Adr*_*ert 2 php mysql query-optimization

我们假设我有以下查询:

SELECT地址
FROM地址a,名称n
WHERE a.address_id = n.address_id
GROUP BY n.address_id
HAVING COUNT(*)> = 10

如果这两个表足够大(想想我们在这两个表中是否有整个美国人口)那么在这个SELECT上运行一个EXPLAIN会说Using temporary; Using filesort这通常不好.

如果我们有一个包含许多并发INSERT和SELECT的DB(如此),那么将该GROUP BY a.address_id HAVING COUNT(*) >= 10部分委托给PHP是一个很好的计划来最小化数据库资源?对此进行编码最有效的方法(就计算能力而言)是什么?

编辑:似乎共识是卸载到PHP是错误的举动.那怎么样,我可以改进查询(让我们假设索引已经正确创建)?更详细地说,如何避免DB创建临时表?

Mar*_*c B 5

所以你最小化资源的计划是从数据库中吸取所有数据并让PHP处理它,导致极端内存使用?

如果可能的话,不要进行客户端处理 - 数据库是为这种繁重的工作而设计的.