zoukankan      html  css  js  c++  java
  • Global 和 Local 索引。

    1、创建表:

    create table immutable_local (id varchar not null primary key, cf1.a varchar, cf1.b varchar, cf2.c varchar, cf2.d varchar ) immutable_rows=true;

    create table immutable_global (id varchar not null primary key, cf1.a varchar, cf1.b varchar, cf2.c varchar, cf2.d varchar ) immutable_rows=true;

    create table mutable_local (id varchar not null primary key, cf1.a varchar, cf1.b varchar, cf2.c varchar, cf2.d varchar ) immutable_rows=false;

    create table mutable_global (id varchar not null primary key, cf1.a varchar, cf1.b varchar, cf2.c varchar, cf2.d varchar ) immutable_rows=false;


    2、创建索引:

    create  index index_mutable_global on mutable_global(a,c) include(b);    成功

    create local index index_mutable_local on mutable_local(a,c) include(b);  成功

    create  index index_immutable_global on immutable_global(a,c) include(b);  成功


    create local index index_immutable_local on immutable_local(a,c) include(b);  失败,immutable 表无法创建Local .
    Error: ERROR 1048 (43A04): Local indexes aren't allowed on tables with immutable rows. tableName=INDEX_IMMUTABLE_LOCAL (state=43A04,code=1048)


    3.插入数据


    upsert into mutable_global values ('100001','a1','b1','c1','d1');

    upsert into mutable_global values ('100002','a2','b2','c2','d2');


    upsert into mutable_local values ('100001','a1','b1','c1','d1');

    upsert into mutable_local values ('100002','a2','b2','c2','d2');


    upsert into immutable_global values ('100001','a1','b1','c1','d1');

    upsert into immutable_global values ('100002','a2','b2','c2','d2');


    4、测试检索

    检索中包含了列d,  此列不包含在索引中。

    a、immutable 表使用的时全表扫描,没有使用索引

    explain select a,b,c,d from immutable_global where a='a1';

     CLIENT PARALLEL 1-WAY FULL SCAN OVER IMMUTABLE_GLOBAL 
          SERVER FILTER BY CF1.A = 'a1' 

     

    b、mutable 表使用的时全表扫描,没有使用Global索引

    explain select a,b,c,d from mutable_global where a='a1';
        CLIENT PARALLEL 1-WAY FULL SCAN OVER MUTABLE_GLOBAL  
               SERVER FILTER BY CF1.A = 'a1'


    c、mutable 表使用了 LOCAL 索引

    explain select a,b,c,d from mutable_local where a='a1';
     
      CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a1'] |
             CLIENT MERGE SORT


    5、Local 索引细节

    索引定义create local index index_mutable_local on mutable_local(a,c) include(b);   


    索引内容:


    a、使用部分索引:索引组合的第一个

    explain select a,b,c,d from mutable_local where a='a1' ;

    CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a1']  
         CLIENT MERGE SORT


    b、使用部分索引:索引组合的第二个

    explain select a,b,c,d from mutable_local where c='c1' ;

    CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768] 
         SERVER FILTER BY C = 'c1' 
     CLIENT MERGE SORT 


    c、使用部分索引:include的部分

    explain select a,b,c,d from mutable_local where b='b1' ;
     CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768] 
          SERVER FILTER BY CF1.B = 'b1'  
     CLIENT MERGE SORT


    d、使用全部索引

    explain select a,b,c,d from mutable_local where a='a1' and c='c1' ; 
      CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a1','c1']  
      CLIENT MERGE SORT 


    调换a和c的位置,phoenix会自动优化。

    explain select a,b,c,d from mutable_local where c='c1' and a='a1' ; 
      CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a1','c1'] 
     CLIENT MERGE SORT


    e、使用索引中全部字段

    explain select a,b,c,d from mutable_local where c='c1' and b='b1' and a='a1' ;
     CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a1','c1'] 
         SERVER FILTER BY CF1.B = 'b1' 
     CLIENT MERGE SORT  


    f、使用了不存在于索引中的字段。

    explain select a,b,c,d from mutable_local where a='a1' and d='d1'; 

     CLIENT PARALLEL 1-WAY FULL SCAN OVER MUTABLE_LOCAL  
          SERVER FILTER BY (CF1.A = 'a1' AND CF2.D = 'd1') 


    g. 在Select  中不要使用*,*会导致全表扫描

     explain select a,b,c,d from MUTABLE_LOCAL where a='a'; 
     CLIENT PARALLEL 1-WAY RANGE SCAN OVER _LOCAL_IDX_MUTABLE_LOCAL [-32768,'a'] 
              CLIENT MERGE SORT

    explain select * from MUTABLE_LOCAL where a='a';
     CLIENT PARALLEL 1-WAY FULL SCAN OVER MUTABLE_LOCAL 
        SERVER FILTER BY CF1.A = 'a' 





     


  • 相关阅读:
    网站被刷导致404解决
    vim常用
    curl, wget常用选项
    使用paramiko远程登录并执行命令脚本
    批量监测dns是否可用脚本,不可用时并切换
    shell脚本收集服务器基本信息并入库
    沃通SSL证书及国密SSL证书入驻百度云市场
    电子合同,相比纸质合同有哪些好处?
    DV型域名https证书的优点及申请流程
    Chrome 浏览器显示“网站连接不安全”,是什么原因?
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276357.html
Copyright © 2011-2022 走看看