我有臺這樣的2個不同的小的查詢VS 1項的查詢與子查詢
name | personal_number
-----------------------------------------
Jon | 222
Alex | 555
Jon | 222
Jimmy | 999
我需要讓每一個名字,這personal_number表超過1 repeates,那就是結果一定是:
Jon
Jon
所以,變體1):
SELECT name FROM mytable WHERE personal_number IN (
SELECT personal_number FROM mytable GROUP BY personal_number
HAVING COUNT(*) > 1
)
變體2):
SELECT personal_number FROM mytable GROUP BY personal_number
HAVING COUNT(*) > 1
)
然後,使用PHP,檢索personal_numbers加入爲字符串(soemthing這樣'222', '222'
),並運行其他查詢
SELECT name FROM mytable WHERE personal_number IN(here joined string)
變2項工程大約快10倍,比變種1,這是驚喜對我來說,我在想,一個查詢會更快,但是......
(在表500個000行,列personal_number
沒有索引)
所以,你的意思是這樣的情況嗎?爲什麼變體2比變體1快多了?
+1的好問題並且在運行一些基準測試之前不要求。 – enenen 2013-04-09 10:22:42
解釋這兩個查詢應該顯示它 – 2013-04-09 10:34:59
如果名稱和個人編號相互依賴,則應該將您的表格移至第二個標準格式 – Argeman 2013-04-09 10:40:51