首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中使用截断VARCHAR作为索引时的性能

问在MySQL中使用截断VARCHAR作为索引时的性能
EN

Database Administration用户
提问于 2019-09-24 04:11:11
回答 1查看 328关注 0票数 0

根据这个问题的答案:https://stackoverflow.com/questions/3489041/mysqlerror-specified-key-was-too-long-max-key-length-is-1000-bytes

创建索引example_idx ON YOUR_TABLE( your_column ( 50 )),假设your_column是VARCHAR(100),那么上面示例中的索引将仅位于前50个字符上。搜索超过第50个字符的数据将无法使用该索引。

我不这样认为。我认为,当查询字符串超过50个字符时,MySQL将首先使用前50个字符和索引来获得匹配列表(通常是一个非常短的列表),然后在没有索引的列表中进行搜索。

当查询字符串大于50个字符时,MySQL根本不使用索引是真的吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-09-24 09:00:22

你只是部分正确。MySQL查询优化引擎仍将尝试使用该索引,只要:

  1. 查询具有完全匹配(a = 'b',a <> 'b',IN子句等)-不是“喜欢”子句,
  2. 存储引擎是InnoDB、XtraDB (Percona),或者可能是InnoDB的其他分支。
  3. 服务器是最近的(至少5.0或5.1 -我现在不确定,但在4.x varchar索引的工作方式有点不同)。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/249454

复制
相关文章

相似问题

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