2012-03-16 81 views
0

查詢效率如何。它在子查詢中從同一個表中選擇兩次。查詢效率

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),所以它一定是好的,但有什麼,會提高查詢的結構?

+0

這是什麼查詢呢? – 2012-03-16 15:50:39

+0

它選擇具有相同國家代碼的字段數量大於或等於1的不同國家/地區名稱的列表。 – James 2012-03-16 15:51:58

+0

這不必要的複雜(如果我正確理解問題)。 – 2012-03-16 16:18:44

回答

3

好像它可以被改寫爲一個單一的查詢:

SELECT country, COUNT(id) rowCount 
FROM tbl 
WHERE hide <> 1 
GROUP BY country 
HAVING rowCount >= 1 

遊樂場:http://sqlfiddle.com/#!2/28978/1

+0

這似乎好多了!謝謝! – James 2012-03-16 16:24:49

+2

@James::)是的,sqlfiddle太棒了。如果只有每個人在問題中使用它:) – 2012-03-16 16:28:04