我想运行以下查询:
-- Main Query
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA')
以下查询(来自主查询的子查询):
SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA'
在 7 秒内执行,从 2.1M 行的表中提供 2691 行。
我触发了上面的主查询,等待 5 分钟后它仍在执行。
最后,我单独执行了子查询,从结果中取出2691条记录,执行如下查询:
-- Main Query (improvised)
SELECT COUNT(*) FROM table_name WHERE device_id IN
("device_id_1", "device_id_2", ....., "device_id_2691")
令人惊讶的是,这在 40 秒内给了我答案。
是什么赋予了?为什么 MySQL 不使用我使用的相同技术并快速给出答案?难道我做错了什么?