mysql索引知识

4 篇文章 0 订阅

1.索引的概念   通过使用 数据中的部分数据作为关键字,建立该关键字与数据间位置的对应关系,称之为索引   

索引的关键字,一定是排序过的。

查找对应的记录时,先索引中进行检索,快速的定位为该关键字对应的记录位置,直接去该位置,记录找到即可


索引一般分为4种 

主键索引,唯一索引,全文索引,普通索引  当然还有全文索引  这个要根据使用的引擎不同区分 比如myisam支持全文索引  而innodb不支持

普通索引 index

对关键字没有任何要求

唯一索引 unique index

要求索引关键字不能重复。

反过来:如果一个字段(字段组),被创建了唯一索引,同时也就约束了该字段(字段组),不能添加重复数据。

主键索引 primary key

要求关键字不能重复,同时不能为null

全文索引 fulltext index

生成关键字的方式不同。

除全文索引外,其他的索引都是,直接使用字段数据作为索引关键字。

而全文索引:对需要索引的字段,进行关键字提取,分析内容,其中有意义的词提取作为关键字:


在执行SQL前,MySQL会形成执行计划,包含了当前的SQL执行所采用的策略。

MySQL支持 将执行计划获取。

通过 explain select 语法!

获取select查询语句的执行计划!



索引一般用在哪里呢 

1.where后面的字段  如果建立了索引是可以使用的

2.orderby 后面的字段

3.连表查询时的条件字段


使用索引注意的地方

1.字段独立  比如where  id=1   id是设置了主键索引的   那么id不能参与表达式   像where id+1=3这样 索引就不起作用了

2.左原则   左原则分二种情况  第一种模糊匹配  比如 where name like "ss%"  这样是可以的   但是模糊匹配的字段左边有通配符就不能使用索引  比如where  name like "%ss"

第二种情况是  联合索引  比如建立了一个联合索引 key lh (name,age)  那么where  name = ss  才能用到联合索引  而where age =18 是用不到的 

索引的关键字顺序,先按照左边字段排序,如果左边字段相同,按照右边字段排,以此类推

3.or原则  

要保证 OR两侧的表达式都有索引可以使用,会用到索引  比如where name =ss or age =15  要在name和age 二个字段上都建立索引  这个sql语句才能用到索引

有时候mysql也会根据优化器自动判断是否使用索引


总结一句话  

为可能的场景,建立索引。考虑SQL是否满足语法规范


前缀索引

如果你一个字段很长  你想在这个字段上建一个索引   可以选择利用这个字段的前多少个字符做为索引  选择字符长度的原则就是具有足够的辨识度  也就是重复率吧  


全文索引 

mysql的全文索引不支持中文  所以一般用 斯文克斯也就是sphinx结合mysql做全文索引


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值