美文网首页
MySQL组合索引不被命中使用的情况

MySQL组合索引不被命中使用的情况

作者: 北冥摸鱼 | 来源:发表于2020-02-06 18:09 被阅读0次

创建组合索引:一个表中可以有多个,用多个列组合构建的索引,这多个列中的值不允许有空值。

ALTER TABLE table_name ADD INDEX index_name(col1,col2,col3);

查询条件中包含索引的前缀部分, 也就是 col1, 可以触发索引的使用

 select * from table_name where col1=1;

使用联合索引的全部索引键, 可触发索引的使用

 select * from table_name where col1=1 and col2=2;

根据最左前缀原则查询条件中包含索引的前缀部分, 也就是 col1, 可以触发索引的使用

select * from table_name where col1=1;

使用部分索引键, 但不包含索引的前缀部分,不可触发索引的使用

 select * from table_name where col2=2;

使用联合索引的全部索引键, 但不是AND操作, 不可触发索引的使用

select * from table_name where col2=2 or col1=1;

使用联合索引的,但是在索引列使用比较、计算的(包含不等于和not)不可触发索引的使用;
但是请注意在对主键和int类型的索引使用比较类型的则可以出发索引;

select * from table_name where col1>0;

使用联合索引的,但是在索引列使用比较、计算的不可触发索引的使用

select * from table_name where col1>0;

使用联合索引的,但是在索引列使用前导模糊查询、正则匹配的不可触发索引的使用

select * from table_name where col1 like  "%1"; //不可命中索引
select * from table_name where col1 regex" “^%1"; //不可命中索引
select * from table_name where col1 like  "1%"; //可以命中索引

使用联合索引的,但是在索引列使用In查询的不可触发索引的使用

select * from table_name where col1 in  1,2;

使用联合索引的,但是使用连接查询的不可触发索引的使用,因为连接查询是生成了临时表,因为临时表没有索引

select table_name.* from table_name,table_name2 where table_name.col1=1;

使用联合索引的,但是索引列类型与查询条件的类型不同的也不会触发索引(如索引类型是int,而查询条件是string)

select * from table_name where col1='0';

相关文章

  • MySQL组合索引不被命中使用的情况

    创建组合索引:一个表中可以有多个,用多个列组合构建的索引,这多个列中的值不允许有空值。 查询条件中包含索引的前缀部...

  • 查询优化

    MySql组合索引应该注意的细节 1. MySql 组合索引 MySQL组合索引具有...

  • mysql查询到底用了组合索引的哪些字段

    工作中,我们常常使用到mysql的组合索引,但怎样判断mysql查询时,使用了组合索引的那些字段呢?最近从我司DB...

  • mysql组合索引

    组合索引:最左优先原则 如:组合索引(col_a,col_b,col_c) 使用到索引的情况如下: col_a =...

  • MySQL索引的使用

    MySQL索引 MySQL索引可以快速提高MySQL的检索速度。索引分单列索引和组合索引单列索引:即一个索引只包含...

  • mysql索引常见注意事项

    简述 记录一些mysql索引在设计使用时的事项 内容 前导模糊查询无法命中索引 数据类型隐式转换无法命中索引 复合...

  • 10道Python常见面试题

    1、MySQL索引种类 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 2、索引在什么情况下...

  • MySQL中同时存在单独索引和联合索引

    优先使用单独索引,单独索引里有重复项时才用到联合索引能用单独索引时,MySQL会认为没必要用到组合索引 https...

  • mysql

    1.mysql索引的类型,主键索引、唯一索引、普通索引、组合索引、全文索引,b-tree索引 2.mysql具体有...

  • Mysql索引

    Mysql索引的建立对于Mysql的高效运行是很重要的,索引可以大大提高Mysql的检索速度索引分为单列索引和组合...

网友评论

      本文标题:MySQL组合索引不被命中使用的情况

      本文链接:https://www.haomeiwen.com/subject/jrpuxhtx.html