我有一个左连接select语句,它从两个表中检索值: tableA和tableB。语法如下:
SELECT tableA.first, tableA.middle, tableA.last, tableB.full FROM tableA LEFT JOIN
tableB ON tableB.full LIKE concat('%',tableA.middle,'%');对于此语句,最好的索引类型是什么?我已经在tableB.full上尝试了一个,但是根据我的解释语句,它没有被使用。
注意:虽然这可能是显而易见的,但我是一个连接语句的新手。谢谢。
发布于 2010-11-15 08:14:50
条件
`field` LIKE '%foo'不能使用索引进行优化。你应该避免这样的情况。
发布于 2010-11-15 08:19:18
Here上写着:
以下SELECT语句不使用索引:
SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';SELECT * FROM tbl_name WHERE key_col LIKE other_col;
在第一条语句中,LIKE值以通配符开头。在第二个语句中,LIKE值不是常量。
如果使用... LIKE '%string%'并且string的长度超过三个字符,MySQL将使用Turbo Boyer-Moore算法初始化字符串的模式,然后使用此模式更快地执行搜索。
不幸的是,我不知道在这种情况下,Turbo Boyer-Moore算法是否可以从索引中受益。
https://stackoverflow.com/questions/4180515
复制相似问题