小编Die*_*ino的帖子

Mysql - "选择喜欢"不使用索引

我一直在玩MySQL上的索引(5.5.24,WinXP),但我找不到服务器在使用时没有使用一个索引的原因LIKE.

这个例子是这样的:

我创建了一个测试表:

create table testTable (
  id varchar(50) primary key,
  text1 varchar(50) not null,
  startDate varchar(50) not null
) ENGINE = innodb;
Run Code Online (Sandbox Code Playgroud)

然后,我添加了一个索引startDate.(请不要问为什么列是文本而不是日期时间..这只是一个简单的测试):

create index jeje on testTable(startdate);
analyze table testTable;
Run Code Online (Sandbox Code Playgroud)

之后,我添加了近200,000行,其中startDate有3个可能的值.(每个人的三分之一出现..近70,000次)

所以,如果我运行这样的EXPLAIN命令:

explain select * from testTable use index (jeje) where startDate = 'aaaaaaaaa';
Run Code Online (Sandbox Code Playgroud)

答案如下:

id = 1
select_type = SIMPLE
type = ref
possible_keys = jeje
key = jeje
rows = 88412
extra = Using where
Run Code Online (Sandbox Code Playgroud)

因此,使用密钥,行数接近200,000/3,所以一切正常.

问题是,如果我将查询更改为:(只需将'='转换为'LIKE'):

explain …
Run Code Online (Sandbox Code Playgroud)

mysql indexing explain

9
推荐指数
2
解决办法
8290
查看次数

标签 统计

explain ×1

indexing ×1

mysql ×1