mysql 无法使用索引的查询

索引是什么,为什么要用索引,索引使用的时候要注意什么,那些情况下索引无法起作用。

1,索引是什么

  mysql的索引也是一张表,并且是一个有序的表,主要记录了需要索引的数据的物理地址,在数据量巨大的时候,查询某些值,不需要进行全表扫描,就可以找到对应的值,大大加快查询速度。

2,为什么用索引,索引使用的时候要注意什么

  前文已经说过,索引可以大大的加快数据查询的速度,当数据量巨大的时候,加索引比不加索引的速度有指数级的增加。

  但是,并不是所有的字段都加索引,有些情况下比必要的索引会增加数据查询和存储的时间。

  1,小表不需要加索引,数据量小的表会增加存储空间,减缓查询速度。

  2、频繁更新的表不适合加过多的索引,因为每次更新操作都需要重建索引,虽然查询速度加快,但更新却会变慢。

  3、字段建立索引的原则

    优先建立唯一索引,唯一索引的速度是最快的。

    建立索引的字段尽量是短字段,索引也是需要占用磁盘空间,短字段更加适合,而且长字段也会增加查询时间。

    表的索引并不是越多越好,适合的字段索引才能加快查询速度。

    经常排序分组的字段需要加上索引。

    尽量避免NULL

    一个表多个索引的建立需要符合最左原则

3,那些情况下索引无法起作用

  加了索引的表,并不是都起作用,在某些查询条件下,索引并不运行。

  1,查询的条件含有计算、函数的。

    select * from test where id-1=9;

    select * from test where sbustring(a,4)='abc';

  2、查询得到的数据是表数据的%30以上。

  3、隐式转换将不会使用索引。

    a的类型是int

    select * from test where a='151111';将不会使用索引。

  4、or的条件,前面有索引,后面的字段没有索引,则正条查询不用索引。

  5、复合索引的时候,如果条件不是复合索引的第一个值,则不会使用索引(最左原则)

    test只有复合索引(name,classid);

    select * from test where classid=3;将不用索引

  6、like是以%开始的条件不会使用索引。

  7、jion的两端条件的主键和外键字段类型必须是相同的。

  8、不要给‘性别’等值是固定数目的值加索引

  9、not in和<>的条件不会使用索引,

    not in可以用not exists,<>可以用 a>x and a<x

  10、默认值是NULL的数据索引不起作用,所以定义字段的时候,尽量用not null default 0等来定义。

mysql 索引的注意事项的更多相关文章

  1. mysql索引使用注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  2. mysql索引的注意事项

    索引的优点 大大加快数据的查询速度 使用分组和排序进行数据查询时,可以显著减少查询时分组和排序的时间 创建唯一索引,能够保证数据库表中每一行数据的唯一性 在实现数据的参考完整性方面,可以加速表和表之间 ...

  3. 来了解一下Mysql索引的相关知识:基础概念、性能影响、索引类型、创建原则、注意事项

    索引的基础概念索引类似于书籍的目录,要想找到一本书的某个特定主题,需要先查找书的目录,定位对应的页码:存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行 ...

  4. mysql索引总结----mysql 索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  5. MySQL索引简述

    文章归属:http://feiyan.info/16.html,我想自己总结,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼 ...

  6. mysql索引的使用和优化

    参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009 ...

  7. ***mysql索引总结----mysql索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  8. MySQL索引使用方法和性能优化

    在自己的一个项目中,数据比较多,搜索也很频繁,这里找到一个建立索引很不错的文章,推荐下. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的 ...

  9. MySQL 索引 总结

    1.索引的种类(六种) 普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引 2.优缺点及注意事项 优点:有了索引,对于记录数量很多的表,可以提高查询速度. 缺点:索引是占用空间的,索引会影响u ...

随机推荐

  1. elasticsearch父子文档处理(join)

    elasticsearch父子文档处理 join 一.背景 二.需求 三.前置知识 四.实现步骤 1.创建 mapping 2.添加父文档数据 3.添加子文档 4.查询文档 1.根据父文档id查询它下 ...

  2. 洛谷 P5785 [SDOI2012] 任务安排

    链接: P5785 弱化版:P2365 题意: 有 \(n\) 个任务待完成,每个任务有一个完成时间 \(t_i\) 和费用系数 \(f_i\),相邻的任务可以被分成一批.从零时刻开始这些任务会被机器 ...

  3. 微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能

    微软近日激怒了开源.NET社区,起因是它删除了开源.NET的一项旗舰功能,以提升Visual Studio 的吸引力,尤其是针对与Visual Studio颇有渊源的跨平台源代码编辑器Visual S ...

  4. stat命令的实现

    任务详情 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep -r的使用 伪代码 产品代码 mystate.c,提交码云链接 测试代码,mystat 与st ...

  5. Codeforces Round #736 (Div. 2)

    A,B,C就不说了,又被D题卡住了..... 感觉怎么说呢,就是题解中的三个提示都已经想到了,就是不知道该怎么解决.... D. Integers Have Friends 简述题意:题目要求你找一个 ...

  6. 腾讯云星星海SA2云服务器特点

    一.腾讯云星星海SA2云服务器特点 腾讯云深度定制AMD处理器.AMD EPYC ROME ,频率3.3Ghz.提供超大单核 L3 Cache.(基础频率2.6Ghz,睿频3.3Ghz).企业级服务器 ...

  7. 正则表达式之grep

    grep 的五个参数,基本的常用的: -a :将 binary 档案以 text 档案的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺 ...

  8. fiddler 手机+浏览器 抓包

    用fiddler对手机上的程序进行抓包   前提: 1.必须确保安装fiddler的电脑和手机在同一个wifi环境下 备注:如果电脑用的是台式机,可以安装一个随身wifi,来确保台式机和手机在同一wi ...

  9. NAT & 防火墙

    NAT 网络地址转换 NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联 ...

  10. 羽夏看Win系统内核——驱动篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...