索引优化策略


1:索引类型

1.1B-tree索引

注:名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,个引擎稍 有不同,比如,严格的说,NDB引擎,使用的是T-tree索引
myisam mnodb中默认使用B-tree索引但抽象一下   b_tree系统,可理解为为‘排好序的快速查找结构’


1.2hash索引

 在memory(内存)表里,默认是hash索引,hash的理论查询时间复杂度为1(1)
疑问:jiran hash的查找如此高效,为什么不都用hash索引?
答:
1:hsah函数计算后的机构是随机的,如果是在磁盘上放置的数据,比如主键为Id为例
,那么随着id的增长,id对应的行,在磁盘上随机放置。
2:无法对范围查询进行优化
3:无法利用前缀索引,比如 在tree中,field列的值‘helloworld’,并添加索引
,查询 xx=helloworld自然可以利用索引,xx-hello,也可以利用索引
(左前缀索引),因为hash(‘helloword’)和hash(‘hello’),两张关系仍未随机
4:排序呢也无法优化
5:必须换行,也就是说,通过索引拿到数据位置,必须到表中取数据

2:btree索引的常见误区

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

例:where cat_id=3 and price>100;//查询第三个栏目,100元以上的商品
误:cat_id和price上都加上索引

错:只能用上cat_id或price索引,因为是独立的索引,同事只能用上一个

 2.2 复合索引遵循最佳左前缀原则

最左前缀:顾名思义,就是最左优先,例如中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引。
参考:http://www.cnblogs.com/jamesbd/p/4333901.html




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值