我有以下 MySQL 查询需要超过一天才能执行:
SELECT SN,NUMBER FROM a
WHERE SN IN
(SELECT LOWER_SN FROM b
WHERE HIGHER_ED LIKE "%c1" AND LOWER_ED LIKE "%16")
AND ED LIKE "%16"
子查询需要 21 秒才能运行并返回 11035 行。我有以下索引:
SHOW INDEX FROM a
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
0 a 1 wob1 1 ED A 756095 无 无 BTREE
1 a 1 wob2 1 SN A 2268287 无 无 BTREE
2 a 1 wob3 1 ED A 756095 无 无 BTREE
3 a 1 wob3 2 SN A 9073150 无 无 BTREE
4 a 1 wob4 1 NUMBER A 18146301 无 无 是 BTREE
5 a 1 wob5 1 SN A 2268287 无 无 BTREE
6 a 1 wob5 2 编号 A 18146301 无 无 是 BTREE
EXPLAIN给出:
# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'PRIMARY', 'a', 'ALL', NULL, NULL, NULL, NULL, '18146301', '使用 where'
'2', 'DEPENDENT SUBQUERY', 'b', 'index_subquery', 'cfg2', 'cfg2', '47', 'func', '6', '使用 where'
为什么不使用索引?如何加快查询速度?