欢迎来到天天文库
浏览记录
ID:8930985
大小:27.50 KB
页数:3页
时间:2018-04-12
《likesql语句的优化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、LikeSQL语句的优化LikeSQL语句的优化的一个小测试1.尽量不要使用like'%..%'2.对于like'..%..'(不以%开头),Oracle可以应用colunm上的index3.对于like'%...'的(不以%结尾),可以利用reverse+functionindex的形式,变化成like'..%'具体的测试流程:(测试工具:PLSQLDeveloper)[1]'建测试表和Index,注意,重点在于带reverse的functionindex。同时,一定要使用CBO才行。已连接到OracleDatabase10gEnterp
2、riseEditionRelease10.2.0.1.0已连接为zxdbm_ismpSQL>selectreverse('123')fromdual;REVERSE('123')--------------321SQL>createtabletest_likeasselectobject_id,object_namefromdba_objects;Tablecreated.SQL>createindextest_like_nameontest_like(object_name);Indexcreated.SQL>createindextes
3、t_like_name_reverseontest_like(reverse(object_name));--建反向索引Indexcreated.SQL>analyzetabletest_likecomputestatisticsfortableforallindexes;Tableanalyzed.SQL>setautotracetraceexp[2]'常量开头的like,会利用index,没问题……'SQL>select*fromtest_likewhereobject_namelike'AS%';ExecutionPlan------
4、----------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=655Bytes=15720)10TABLEACCESS(BYINDEXROWID)OF'TEST_LIKE'(Cost=2Card=655Bytes=15720)21INDEX(RANGESCAN)OF'TEST_LIKE__NAME'(NON-UNIQUE)(Cost=2Card=118)[3]'开头和结尾都是%,对不起,很难优化'SQL>sele
5、ct*fromtest_likewhereobject_namelike'%%';ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=6Card=655Bytes=15720)10TABLEACCESS(FULL)OF'TEST_LIKE'(Cost=6Card=655ytes=15720)[4]'以常量结束,直接写的时候是不能应用index的'SQL>select*fromt
6、est_likewhereobject_namelike'%S';ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=6Card=655Bytes=15720)10TABLEACCESS(FULL)OF'TEST_LIKE'(Cost=6Card=655Bytes=15720)[5]'以常量结束的,加个reverse函数,又可以用上index了'(需要反向索引的支持)SQL>s
7、elect*fromtest_likewherereverse(object_name)likereverse('%AS');ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=655Bytes=15720)10TABLEACCESS(BYINDEXROWID)OF'TEST_LIKE'(Cost=2Card=655Bytes=15720)21INDEX(RANGE
8、SCAN)OF'TEST_LIKE__NAME_REVERSE'(NON-UNIQUE)(Cost=2Card=118)转:http://rollingpig.itpub.net
此文档下载收益归作者所有