mysql中查询不使用索引的情况

索引,但用不上的情况:

在数据库表中,使用索引可以提高查询速度。但是索引并不是对所有的查询操作都会生效的。比如以下几种情况,将导致索引失效:

1、如果查询条件用or,必须or条件中的每个列都加上索引,否则无效。

2、对于复合索引(又叫多列索引或者联合索引),如果查询的列不使用复合索引的第一部分,则不使用索引。例如,tb表的复合索引为(key1,key2,key3),则查询select * from tb where key2=1 and key2>5将不会使用索引。

3、如果like是以%开头的,则该列上的索引不会被使用。例如:select * from tb where key1 like "%a"; 即使key1列上建立了索引,该查询也不会使用索引。

4、存在索引列的数据类型隐形转换,则不使用索引。例如:列key1的数据类型为字符串,select * from tb where key1=1; 将不会使用索引。要想使用索引,必须将字符串用引号印起来。

5、where字句里对索引列有数学运算或者使用函数,则不使用索引。


不推荐使用索引的情况:

1、数据唯一性差(一个字段的取值只有几种情况)的字段不要使用索引:

例如性别,只有两种可能数据。意味着索引的二叉树级别少,这样的二叉树查询无异于全表扫描。

2、频繁更新的字段不要使用索引:

例如login_count登陆次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,338评论 5 116
  • 花了3天时间学习MySql,考了个二级MySql 书籍参考:高等教育出版社《全国计算机等级考试二级教程-MySQL...
    如果仲有听日阅读 5,071评论 4 4
  • 转载:http://blog.codinglabs.org/articles/theory-of-mysql-in...
    qf1007阅读 5,069评论 0 0
  • 郭相麟 当人有所成就时,容易陷入自鸣得意的状况:看人神情不屑一顾,眼神透着不可一世,眼高手低的指点江山,众人在他眼...
    郭相麟阅读 1,183评论 0 0
  • 2018年9月7日红源悟语 自我觉醒:想都是问题,做才是答案! 今日成长 抓住能抓住的,你才能顺着抓住的东西前行!...
    红源随笔阅读 949评论 0 0