【oracle优化】优化含LIKE的SQL语句(1)

 时间:2024-10-11 23:48:36

1、下面我们逐一介绍,首先我们看一下第一种情况,也就是%在尾的这种情况。现场创建一张测试表t1,并将t1表灌入100万条测试数据。

【oracle优化】优化含LIKE的SQL语句(1)

2、前三个命里主要是设置格式和执行时间,最后一个命令主要是打开我们的执行计划跟踪

【oracle优化】优化含LIKE的SQL语句(1)

3、不用建索引,我们直接进行update操作,先看一下全表扫描情况的资源消耗情况,通过下图可以看到t1在update时全表扫描逻辑读达到61672

【oracle优化】优化含LIKE的SQL语句(1)

4、对于%在尾的这种情况,我们直接在where list中相应的字段创建索引。

【oracle优化】优化含LIKE的SQL语句(1)

5、我们再次执行同样的update操作,观察一下该sql的执行计划,通过下图可以看到t1在update时已经选取了我们的索引,而且逻辑读只有650

【oracle优化】优化含LIKE的SQL语句(1)

6、接下来我们看一下第二种情况,也就是%在头的这种情况。依然是执行update语句。可以看到这种情况下,oracle优化器选择了我们刚才创建的索引,但是逻辑读仍有3000多,效果依然不理想。

【oracle优化】优化含LIKE的SQL语句(1)

7、下面我们创建反向索引

【oracle优化】优化含LIKE的SQL语句(1)

8、我们利用oracle的undocument函数reverse来使oracle优化器选择我们刚创建的反向索引,观察一下盐淬芪求该sql的执行计划,通过下图可以看到t1在update时已经选取了我们的反向索引,而且逻辑读只有3

【oracle优化】优化含LIKE的SQL语句(1)

9、最后介绍一下两头都有%这种情况,一般这种情况,我们使用instr函数来替代like,但是根据下图显示,oracle优化器选择了全表扫描,效果肯定不理想。

【oracle优化】优化含LIKE的SQL语句(1)

10、此时我们创建函数索引

【oracle优化】优化含LIKE的SQL语句(1)

11、再次执行update,通过下图可见,oracle优化器已经利用我们创建的函数索引,效果也比like‘%%’好的多。

【oracle优化】优化含LIKE的SQL语句(1)
  • excle连接数据库oracle的方法
  • bat批量执行sql脚本
  • outlook如何设置允许在公用文件夹中使用脚本?
  • SQL server 2000 数据库还原失败的解决
  • 把任意exe程序注册成windows系统服务
  • 热门搜索
    涨奶有硬块怎么办 最好的避孕方法 公司名字大全 广东人怎么样 初中生长高方法 红烧鸡块怎么烧好吃又嫩 缓解紧张的方法 南京交通职业技术学院怎么样 炖排骨的做法大全家常 晚上经常失眠怎么办