使用索引注意事项

使用索引注意事项_第1张图片

 

索引的注意事项

创建一张表

 新增dept 数据

create PROCEDURE insert_dept(in start int(10),in max_num int(10))
BEGIN
 declare i int DEFAULT 0;
 set autocommit=0;
 REPEAT
 set i=i+1;
 insert into dept values ((start+i),rand_string(10),rand_string(8));
 UNTIL i =max_num
 end REPEAT;
  commit;
END
执行
call insert_dept(100,10);

创建主键索引

alter table 表名 add primary key (列名);

创建一个联合索引

alter table dept add index my_ind (dname,loc); //  dname 左边的列,loc就是右边的列

注意:

1.对于创建的多列索引,如果不是使用第一部分,则不会创建索引。

explain select * from dept where loc='aaa'\G

就不会使用到索引

2.模糊查询在like前面有百分号开头会失效。

3. 如果条件中有or,即使其中有条件带索引也不会使用。换言之,就是要求使用的所有字段,都必须建立索引, 我们建议大家尽量避免使用or 关键字

4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。(添加时,字符串必须’’), 也就是,如果列是字符串类型,就一定要用 ‘’ 把他包括起来.

5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

 

 

查询所用使用率

show status like ‘handler_read%’;

 

大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

handler_read_rnd_next:这个值越高,说明查询低效。

你可能感兴趣的:(索引)