Chinaunix首页 | 论坛 | 博客
  • 博客访问: 352794
  • 博文数量: 166
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1640
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 11:44
个人简介

文章不在长,坚持不懈记录下努力前行的脚步

文章分类

全部博文(166)

文章存档

2017年(19)

2016年(59)

2015年(88)

我的朋友

分类: Mysql/postgreSQL

2015-06-08 15:03:44

mysql索引分类
聚集索引和非聚集索引
btree,hash,full-text
innodb默认索引为btree索引
一、btree使用索引原则
1.最左匹配原则
比如 index(A,B,C)
where A=xx and B=xx and C=xx
会用到全部的索引

where A=xx and B=xx
会用到2/3的索引

where A=xx and C=xx
只用到了1/3的索引
C=xx是无效的

2.like模糊匹配相当于范围索引
'%string%','%string','string%'
只有第三种会用到范围索引

3.运算符的优先级会影响索引生效
where B=xx and C=xx or A=xx
会优先条件过滤B=xx and C=xx,违反了最左匹配原则,所以该查询条件没有用到索引

4.范围索引会截断索引,使部分索引失效
where A=xx and B>xx and C=xx
该查询条件只用到了2/3的索引,C=xx的索引被截断

二、hash索引
hash索引是将列值


备注:update语句有可能会更新索引,一个可能会用到的优化技巧是去掉过多的索引(可能很少用到,平衡性能来考虑)
索引都是被加载到内存中的






阅读(514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~