mysql 索引的注意事项
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 索引的注意事项的更多相关文章
- mysql索引使用注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- mysql索引的注意事项
索引的优点 大大加快数据的查询速度 使用分组和排序进行数据查询时,可以显著减少查询时分组和排序的时间 创建唯一索引,能够保证数据库表中每一行数据的唯一性 在实现数据的参考完整性方面,可以加速表和表之间 ...
- 来了解一下Mysql索引的相关知识:基础概念、性能影响、索引类型、创建原则、注意事项
索引的基础概念索引类似于书籍的目录,要想找到一本书的某个特定主题,需要先查找书的目录,定位对应的页码:存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行 ...
- mysql索引总结----mysql 索引类型以及创建
文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...
- MySQL索引简述
文章归属:http://feiyan.info/16.html,我想自己总结,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼 ...
- mysql索引的使用和优化
参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009 ...
- ***mysql索引总结----mysql索引类型以及创建
文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...
- MySQL索引使用方法和性能优化
在自己的一个项目中,数据比较多,搜索也很频繁,这里找到一个建立索引很不错的文章,推荐下. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的 ...
- MySQL 索引 总结
1.索引的种类(六种) 普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引 2.优缺点及注意事项 优点:有了索引,对于记录数量很多的表,可以提高查询速度. 缺点:索引是占用空间的,索引会影响u ...
随机推荐
- 2021.7.15考试总结[NOIP模拟16]
ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...
- netty系列之:搭建客户端使用http1.1的方式连接http2服务器
目录 简介 使用http1.1的方式处理http2 处理TLS连接 处理h2c消息 发送消息 总结 简介 对于http2协议来说,它的底层跟http1.1是完全不同的,但是为了兼容http1.1协议, ...
- python编程中的流程控制
内容概要 成员运算 身份运算 流程控制 详细 1.成员运算 定义:判断某个个体在不在某个群体内 关键词:in(在) /// not in(不在) 例: num_list = [1, 2, 3, 4, ...
- CSS学习(二)选择符
元素选择符:以元素名作为选择符(span{ color: red; }) 群组选择符:将两个选择符用逗号隔开构成群组(span, div{ color: red; }) 通用选择符:通用选择符(*)将 ...
- 为什么Hashtab的大小通常取远离2^n 的素数
举个栗子 在Hashtab中我们通常 Hash(key) % M 来确定 key 所需要存放的位置 M就是Hashtab的大小,假设下面的两个场景 Hash(key1) = 108 Hash(key2 ...
- 大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?
"指针是C语言的灵魂"这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为....难,真难:下面说一下我对这句话的见解: C语言拥有着其他语言所没有的特性---直 ...
- @RestController注解的作用
原文出自"https://www.cnblogs.com/yaqee/p/11256047.html" 一.在Spring中@RestController的作用等同于@Contro ...
- C++概述及知识点总结
经过一段时间的学习,以前从没有接触过C++这个高逼格的语言的小白,逐渐对C++有了更深的了解和认识,C++是c语言的升级版,Bjarne Stroustrup在剑桥大学计算机中心工作.他使用过Simu ...
- MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》
有一个问题是这样的统计数据总数用count(*).count(主键ID).count(字段).count(1)那个效率高. 先说结论,不用那么花里胡哨遇到统计总数全部使用count(*). 但是有很多 ...
- Nginx通过ngx_http_limit_req_module实现限制请求数、限速、白名单
/etc/nginx/limit/white_list:白名单,key-value形式,支持掩码网段 #test 192.168.50.42 0; 192.168.50.0/24 0; /etc/ng ...