最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Mysql-索引优化策略

来源:动视网 责编:小采 时间:2020-11-09 09:13:25
文档

Mysql-索引优化策略

Mysql-索引优化策略:本节后边通过实际易懂的举例,来说明索引实际的触发,从而优化自己在加索引时使用的策略。一.索引类型1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,比如,严格的说,NDB引擎,使用的是T-tree,Myisam,
推荐度:
导读Mysql-索引优化策略:本节后边通过实际易懂的举例,来说明索引实际的触发,从而优化自己在加索引时使用的策略。一.索引类型1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,比如,严格的说,NDB引擎,使用的是T-tree,Myisam,
 本节后边通过实际易懂的举例,来说明索引实际的触发,从而优化自己在加索引时使用的策略。

一.索引类型

1.1 B-tree索引

注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,

比如,严格的说,NDB引擎,使用的是T-tree,Myisam,innodb中,默认用B-tree索引

但抽象一下---B-tree系统,可理解为”排好序的快速查找结构”. 更多分析,见Mysql-索引-BTree类型【精简】

1.2 hash索引

在memory表里,默认是hash索引, hash的理论查询时间复杂度为O(1)

疑问: 既然hash的查找如此高效,为什么不都用hash索引?

答:

1:hash函数计算后的结果,是随机的,如果是在磁盘上放置数据,比如主键为id为例,那么随着id的增长, id对应的行,在磁盘上随机放置.

2: 不法对范围查询进行优化.

3: 无法利用前缀索引.比如 在btree中, field列的值“hellopworld”,并加索引,查询 xx=helloword,自然可以利用索引, xx=hello,也可以利用索引. (左前缀索引)。因为hash(‘helloword’),和hash(‘hello’),两者的关系仍为随机,其实就是因为HASH是精准的

4: 排序也无法优化.

5: 必须回行.就是说 通过索引拿到数据位置,必须回到表中取数据

二.btree索引的常见误区

2.1 在where条件常用的列上都加上索引

例: where cat_id=3 and price>100 ; //查询第3个栏目,100元以上的商品

误: cat_id上,和, price上都加上索引.

错: 只能用上cat_id或Price索引,因为是的索引结构,同时只能用上1个。详细排列叙述,请见Mysql-索引结构直观图解

2.2 多列索引上,索引发挥作用,需要满足左前缀要求.

误: 在多列上建立索引后,查询哪个列,索引都将发挥作用

以 index(a,b,c) 为例,

三.总结:

1.联合索引的顺序遵循左前缀原理,必须层层连贯,SQL语句中where条件没有前后关系, 如上边4,5查询举例

2.涉及到like < > 等范围查询,此查询后的索引用不上 如7

3.在1层层嵌套的前提下,用到了order排序,order排序不参加where条件,注意[where 字段a order by 字段a] 的问题,其实[order a ]假命题,因为已经 等于a 了还排哪门子序

4.在 select查询中的where,多个条件无顺序,但是索引添加时得注意顺序,同一。

5.group 在分组中的工作原理:先order_by 排序 ,创建临时表,如果建了索引,就能省去创建临时表,所以索引对group有效

文档

Mysql-索引优化策略

Mysql-索引优化策略:本节后边通过实际易懂的举例,来说明索引实际的触发,从而优化自己在加索引时使用的策略。一.索引类型1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,比如,严格的说,NDB引擎,使用的是T-tree,Myisam,
推荐度:
标签: mysql 优化 索引
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top