Mysql 查询效率

Mysql 查询效率,mysql,performance,subquery,Mysql,Performance,Subquery,这个查询的效率有多高。它在子查询中从同一个表中选择两次 SELECT DISTINCT country, rowCount FROM ( SELECT *, ( SELECT COUNT(id) FROM tbl WHERE hide != 1 AND country = y.country ) AS rowCount FROM tbl y ) AS x HAVING rowCount >= 1 ORDER BY x.country ASC 我已经在需

这个查询的效率有多高。它在子查询中从同一个表中选择两次

SELECT DISTINCT country, rowCount FROM 
(
    SELECT *, (
        SELECT COUNT(id) FROM tbl WHERE hide != 1 AND country = y.country
    ) AS rowCount FROM tbl y

) AS x
HAVING rowCount >= 1
ORDER BY x.country ASC

我已经在需要的地方为表编制了索引,并且查询在“0.000秒”内执行(HeidiSQL说),因此它一定很好,但是有什么可以改进查询的结构吗?

似乎可以将其重写为单个查询:

SELECT country, COUNT(id) rowCount
FROM tbl
WHERE hide <> 1
GROUP BY country
HAVING rowCount >= 1
选择国家/地区、计数(id)行计数
来自tbl
我藏在哪里
按国家分组
行数>=1的

游乐场:

似乎可以将其重写为单个查询:

SELECT country, COUNT(id) rowCount
FROM tbl
WHERE hide <> 1
GROUP BY country
HAVING rowCount >= 1
选择国家/地区、计数(id)行计数
来自tbl
我藏在哪里
按国家分组
行数>=1的

游乐场:

此查询的作用是什么?它选择一个不同国家/地区名称的列表,其中具有相同国家/地区代码的字段数量大于或等于1。它不必要地复杂(如果我正确理解此问题)。此查询的作用是什么?它选择一个不同国家/地区名称的列表,具有相同国家/地区代码的字段数量大于或等于1。这是不必要的复杂(如果我理解正确的话)。这似乎更好!谢谢@詹姆斯:)是的,sqlfiddle很棒。如果每个人都在问题中使用它:)那似乎好多了!谢谢@詹姆斯:)是的,sqlfiddle很棒。如果每个人都用它来提问:)