<海量数据库解决方案>2011040201


【摘抄】

为了实现以最少的索引满足对某个表的多样化的数据读取要求,应当为每个索引分配合理的任务,通过为索引分配任务可以在很大程度上提高索引的灵活度。(个人在此认为:索引任务应该指的是用于查询驱动还是查询检验)为了实现该项操作需要考虑:1,允许的情况下,对具有较好离散度的列单独建立索引,可提高该索引的使用弹性(个人建议:一般都是指表关键字索引)2、对于离散度较差的列,通过对多个列合理的组合来创建组合索引,来发挥多个列的综合效益(这类一般用于模糊查询)

索引之间是有竞争的,同时相互影响~

索引合并和组合索引

什么是索引合并?
如果很容易分辨查询条件的优劣,只需选择最好的一个作为驱动查询条件;反之,就考虑多列相互组合来共同负责数据的读取任务,这就是索引合并(index merge)
eg.
Select * from TAB1
Where Col1 = 'abc' And Col2 = 123

此表索引为
Index1:Col1
Index2:Col2

读取模拟:先从Col1中随机读取满足abc的,以达到缩减查询数据的目的。再在结果集中根据Col2来读取满足123的数据。

此过程采用的Index Scan。

只有当合并的索引具有相似的离散度时索引合并才比较有效。建议:在两个索引行数悬殊的情况下,通常只使用其中最好的一个索引来负责读取数据,而另外的索引只负责检验即可。

什么是组合索引?
指基于多列所创建的索引。

索引合并和组合索引在处理上,前者是"Z"字扫描多个索引,后者是"1"字扫描索引。效率上看,后者似乎更有优势。其实不是这样的,还得看查询的条件和离散度。

优质内容筛选与推荐>>
1、服务器配置.net导出Excel
2、第4章 类与对象 枚举类
3、浅谈可复用css
4、好的代码不是设计出来的,而是重构出来的
5、关于 clientHeight | offsetHeight | scrollHeight


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号