【发布时间】:2011-10-02 09:45:58
【问题描述】:
我想优化这个查询(因为子查询通常不快),但我迷路了,因为我无法使用对性能更好的连接来重写它,你能帮我解决这个问题吗?
SELECT id, company, street, number, number_addition, postalcode, telephone
FROM clients
WHERE (postalcode BETWEEN '1000' AND '9000') AND street = (
SELECT DISTINCT street FROM clients WHERE (postalcode BETWEEN '1000' AND '9000') AND postalcode <= (
SELECT MIN(postalcode) FROM clients WHERE street = 'Main Street' AND (postalcode BETWEEN '1000' AND '9000'))
ORDER BY postalcode DESC LIMIT 1, 1)
ORDER BY postalcode DESC, street DESC, number DESC, number_addition DESC, telephone DESC
LIMIT 1
感谢你们的时间。
【问题讨论】:
-
这个查询真的很慢吗?不要随意优化。在您的 MySQL 服务器中启用 slow_query_log。这将在您的 slow_query_log_file 中记录花费超过 long_query_time 的查询。
标签: mysql performance join subquery