作家
登录

MySQL的前缀索引及Oracle的类似实现

作者: 来源: 2018-01-19 08:54:27 阅读 我要评论

  • endwhile;          
  •  
  • returnsubstring(return_str,1,n);      
  •  
  • end;;  
  • 创建测试表

    1. CREATETABLE TEST_PREFIX_IND ( 
    2.  
    3.        ID INT(10) PRIMARY KEY AUTO_INCREMENT, 
    4.  
    5.        NORMAL_STR VARCHAR(20) , 
    6.  
    7.        LONG_STR VARCHAR(1000), 
    8.  
    9.        TEXT_STR TEXT, 
    10.  
    11.        BLOB_STR BLOB 
    12.  
    13.  );  

    插入10000行记录:

    1. drop  procedure if exists init_test_prefix_ind;; 
    2.  
    3. createprocedure init_test_prefix_ind(n int
    4.  
    5. begin          
    6.  
    7. declare iint default 0;  
    8.  
    9. while i< n do          
    10.  
    11. insertinto test_prefix_ind(NORMAL_STR,long_str,  TEXT_STR,BLOB_STR) 
    12.  
    13. values(random_str(20),random_str(rand()*1000+1),random_str(rand()*1000+1),random_str(rand()*300+1)); 
    14.  
    15. seti=i+1; 
    16.  
    17. endwhile;          
    18.  
    19. end;; 
    20.  
    21. callinit_test_prefix_ind(10000);;  
    1. altertable test_prefix_ind add key(LONG_STR);; 

    成功了,然则Sub_part显示为767,表示体系主动创建了前缀长度为767的前缀索引;

    看看大年夜小: 8992k

    1. select * from test_substr where substr(object_name,1,<N>)=:a and substr(object_name,1,5)=substr(:a,1,5);  

    测验测验在TEXT和BLOB的栏位上直接创建索引

    在TEXT和BLOB栏位上建立索引,必须指定前缀长度。

    1. alter table test_prefix_ind add key(text_str(30));; 

    神奇的工作产生了,切实扑晡策了索引,Oracle也支撑前缀索引~~

    看看大年夜小,528k(9520-8992), 远远小于LONG_STR的8992k.


      推荐阅读

      Memory Cleaner——简单好用的Windows内存优化工具

    年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势!Windows 操作体系在没有效户干涉的情况下可以相当有效地治理计算机内存的应用情况,但不是说就没有可以优化和改进的>>>详细阅读


    本文标题:MySQL的前缀索引及Oracle的类似实现

    地址:http://www.17bianji.com/lsqh/40347.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)