zoukankan      html  css  js  c++  java
  • 复合索引的列顺序判断

    复合索引最令人困惑的当属索引列的顺序,不仅依赖于使用该索引的查询,更需考虑排序和分组。
    前段时候我发了个帖子:where条件顺序和复合索引字段顺序。感兴趣的朋友不妨参与讨论。
    今天我提个自己的观点。
    在应用开发阶段,【选择性】是我们首要考虑因素,请看简图:
    当出现sql性能问题时,你可能需要注意以下几个:
    1. 随机IO
    2. 排序(order by)
    3. 分组(group by or distinct)
    这时不必也不应该在关注【选择性】
    我的经验便是,在你手上已经有Top N SQL时,我们应该优先考虑【值的分布】,而不是选择性。
     
    那么该如何判断【值的分布】,我们通过一种被geek称之为 【sarg】的方法,具体操作如下:
    假如,我们有如下query:
    1. select * from userresult_f where askid=800808 and uid=110996854;  
    select * from userresult_f where askid=800808 and uid=110996854;
    则有2个索引可供选择:
    1. idx_1 (askid,uid)
    2. idx_2 (uid,askid)
    是1 还是2 ?
    利用【sarg】方法:
    1. mysql> select sum(askid=800808),sum(uid=110996854) from userresult_fG;  
    2. *************************** 1. row ***************************  
    3. sum(askid=800808): 6  
    4. sum(uid=110996854): 2  
    5. 1 row in set (0.00 sec)  
    mysql> select sum(askid=800808),sum(uid=110996854) from userresult_fG;
    *************************** 1. row ***************************
    sum(askid=800808): 6
    sum(uid=110996854): 2
    1 row in set (0.00 sec)
    依据查询输出,我们应该选择 idx_2
     
    By 数据牧羊人
    Good Luck!
    2014-4-27 19:05  于福州
  • 相关阅读:
    颜色混合openglglBlendFunc函数
    Types of Maps
    ogre 检测显卡gpu支持参数
    (转载)lua和c/c++互相调用实例分析
    光照模型
    阴影(转载)
    eval()解析JSON
    android中The connection to adb is down,问题和解决 AndroidEclipseAntXML
    比较android中的像素单位dp、px、pt、sp
    区别:DOM Core 与 HTMLDOM
  • 原文地址:https://www.cnblogs.com/firstdream/p/7273674.html
Copyright © 2011-2022 走看看