前几天看到一篇博文将 IN 子查询 优化为 LEFT JOIN 的问题,今天自己测试测试。
数据
数据表为 test_item 和 test_item_tag 两个表
test_item:两个字段 item_id[char(36)], release_time[int(11)],共10W条记录
test_item_tag:三个字段 id, item_d, tag_id,共64W条记录
1、IN
SELECT item_id, tag_id FROM test_item_tag WHERE item_id IN
(SELECT item_id FROM test_item WHERE release_time > 1537373044)
查询到 14 W条记录共 1.48 秒
2、INNER JOIN
SELECT a.item_id, a.tag_id FROM test_item_tag a INNER JOIN
(SELECT item_id FROM test_item WHERE release_time > 1537373044) b
ON a.item_id = b.item_id
耗时共 1.54 秒
##3、LEFT JOIN
SELECT b.item_id, b.tag_id FROM
(SELECT item_id FROM test_item WHERE release_time > 1537373044) a
LEFT JOIN test_item_tag b ON a.item_id = b.item_id
很久很久没有跑出结果,放弃了