mysql 索引使用时注意事项_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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值