mysql索引简介

前言:如果数据库不建立索引则查找的时候会进行全表扫描,而建立索引之后会将数据先排序在进行查找,查找到最后一个就不在进行查找了。


简介:索引是一种数据结构,按照数据结构可分为BTree索引和hash索引,按照存储方式可分为聚合索引和非聚合索引
mysql存储引擎分为 MyISAM(很少用,不支持事物)、InnoDB(常用,目前主流存储引擎)、MEMORY(基本不用,存储快,基于内存存储,数据容易丢失)
MyISAM使用的索引方式为非聚合索引及表结构、表数据、索引分开存储,InnoDB为聚合索引及表结构、表数据、索引存储在一个文件中,在mysql的

文件存储目录中可以看出存储区别。


btree索引和hash索引的区别:
1.Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位
2.Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。
3.Hash 索引无法被用来避免数据的排序操作。
4.Hash 索引在任何时候都不能避免表扫描。
5.Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高,hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降

6.对于btree支持的联合索引的最优前缀,hash也是无法支持的,联合索引中的字段要么全用要么全不用。


SQL索引失效的5种情况分析:
1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因),注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
2.对于多列索引,不是使用的第一部分,则不会使用索引
3.like查询是以%开头
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值