【发布时间】:2013-04-09 04:08:44
【问题描述】:
我用过这个查询
SELECT COUNT(CASE WHEN C <= 1 THEN 1 END) AS nooffamiliesHavingcount1,
COUNT(CASE WHEN C BETWEEN 2 AND 4 THEN 1 END) AS nooffamiliesHavingcountbetween2And4,
COUNT(CASE WHEN C > 4 THEN 1 END) AS nooffamiliesHavingcountgreaterthan3
FROM ( SELECT COUNT(*) AS C
FROM user where user_id = (select user_id from location where location_id in(select location_id from country where state_name='STATE'))
GROUP BY House_No
) t
这里的子查询返回大约 10000 条记录。用户 表有 10,00,000 条记录。它花费了太多时间。然后 它说的错误是服务器消失了。我正在使用 mysql。
我从谷歌搜索。但我没有运气。
我需要对我的表进行哪些更改。如何通过以下方式成功执行此查询 提高查询性能。请建议我。提前谢谢....
【问题讨论】:
-
您需要向我们展示表和索引定义。 诊断慢查询需要完整的表和索引定义,而不仅仅是描述或解释。也许您的表格定义不佳。也许索引没有正确创建。也许您认为您在该列上没有索引。没有看到表和索引定义,我们无法判断。如果您知道如何进行
EXPLAIN或获得执行计划,请将结果也放入问题中。 -
我们需要查看整个查询。仅仅解释“这里是另一个子查询”是不够的。向我们展示整个代码、所有表定义和所有索引定义。
-
有什么办法适合我