我有台这样的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