zoukankan      html  css  js  c++  java
  • <海量数据库解决方案>2011040701

    【摘抄】

    当组合索引的第一个索引列(通常成为先导列)没有出现在查询条件中时,一般情况下该索引无法被使用。

    组合索引最大的缺点就是当职位一部分索引列赋予了查询条件时,或者所用的比较运算符都是非"="比较运算符时效率非常低下。因此,创建创建性的组合索引设计两个重要的方面:第一,基于什么样的列创建索引;第二,按照什么样的顺序创建索引。

    1、离散度与列序之间的关系
    如果只在"="比较的情况下,离散度的好坏对列的组合顺序并没有什么大的影响。

    2、等值比较对列的组合顺序的影响
    事实上,对执行速度影响最大的正式使用非等值比较的查询条件。
    在没有为组合索引的第一列赋予使用"="比较查询条件时,即使为后面的列赋予了使用"="查询条件也不会缩减数据的查询范围。

    结论上说,
    在决定组合索引的顺序上,"="比较运算符比离散度更为重要,应当将其放在最优先的位置考虑。
    在决定组合索引列序时,应当结合列的离散度和查询条件来决定最佳组合顺序,从而实现组合索引的最大效能

    3、In的垫脚石效果
    看看书中的例子:
    Select * from Tab1
    Where col1 = 'a' and col2 = '222'

    Tab1索引Index:Col1+Col3+Col2
    上面Sql没有Col3的查询条件,其执行效果:没有为Col3赋予查询条件与为Col3服务Col3 Like '%'查询条件具有相同的效果。那么,Col2的查询条件只能其检验作用。

    假设Col3的值只有{1,2,3},
    那么,Select * From Tab1 Where Col1='a' And Col2 = '222' And Col3 In (1,2,3);
    就能解决上述的问题。

    4、对查询范围不构成直接影响的列的添加准则
    在为某个组合索引选定列时,首先应该考虑的是对直接缩减查询范围起重要作用的列;其次,对附加性列是否会有利于提高执行效率等相关问题进行全面分析。

    无论生活、还是技术,一切都不断的学习和更新~~~努力~
  • 相关阅读:
    初始化注解和销毁注解
    MySQL、SQLServer、Oracle 分组排序
    mybatis 中SQLServer 和 mysql 模糊查询 不同点
    SpringBoot学习之logback.xml 配置指定包或类输出至单独的日志文件中
    类比 RocketMq 和 淘宝消息服务:
    SVN提交文件失败:系统找不到指定路径
    官网下载MySQL 并安装
    Java 变量参数传入方法,方法结束后传入的值
    03-类与对象课后作业(1)
    02方法-课后动手动脑
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/2007486.html
Copyright © 2011-2022 走看看