索引使用小技巧?

索引使用小技巧?

一、索引使用小技巧?

索引弊端
  1.占用磁盘空间。
  2.对dml(插入、修改、删除)操作有影响,变慢。
使用场景:
  a: 肯定在where条件经常使用,如果不做查询就没有意义。
  b: 该字段的内容不是唯一的几个值(sex) 。
  c: 字段内容不是频繁变化。

具体技巧:
  1.对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引。
    alter table dept add index my_ind (dname,loc); // dname 左边的列,loc就是右边的列。
    explain select * from dept where dname=‘aaa’\G 会使用到索引。
    explain select * from dept where loc=‘aaa’\G 就不会使用到索引。

  2.对于使用like的查询,查询如果是’%aaa’不会使用到索引而‘aaa%’会使用到索引。
    explain select * from dept where dname like ‘%aaa’\G不能使用索引
    explain select * from dept where dname like ‘aaa%’\G使用索引.
    所以在like查询时,‘关键字’的最前面不能使用 % 或者 _这样的字符.,如果一定要前面有变化的值,则考虑使用 全文索引->sphinx。

  3.如果条件中有or,有条件没有使用索引,即使其中有条件带索引也不会使用。换言之,就是要求使用的所有字段,都必须单独使用时能使用索引。

  4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。
    expain select * from dept where dname=’111’;
    expain select * from dept where dname=111;(数值自动转字符串)
    expain select * from dept where dname=qqq;报错
    也就是,如果列是字符串类型,无论是不是字符串数字就一定要用 ‘’ 把它包括起来.

  5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
    表里面只有一条记录

猜你喜欢

转载自blog.csdn.net/faramita_of_mine/article/details/124111810
今日推荐