首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为join语句创建索引

为join语句创建索引
EN

Stack Overflow用户
提问于 2010-11-15 08:09:56
回答 2查看 156关注 0票数 1

我有一个左连接select语句,它从两个表中检索值: tableA和tableB。语法如下:

代码语言:javascript
复制
SELECT tableA.first, tableA.middle, tableA.last, tableB.full FROM tableA LEFT JOIN     
tableB ON tableB.full LIKE concat('%',tableA.middle,'%');

对于此语句,最好的索引类型是什么?我已经在tableB.full上尝试了一个,但是根据我的解释语句,它没有被使用。

注意:虽然这可能是显而易见的,但我是一个连接语句的新手。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-15 08:14:50

条件

代码语言:javascript
复制
`field` LIKE '%foo'

不能使用索引进行优化。你应该避免这样的情况。

票数 2
EN

Stack Overflow用户

发布于 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算法是否可以从索引中受益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4180515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档