文档章节

基于索引的SQL语句优化之一

东湖畔新家
 东湖畔新家
发布于 2017/05/09 18:56
字数 277
阅读 2
收藏 0

避免对列的操作

任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数。   

例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢:   

       select * from record where  substrb(CardNo,1,4)='5378'(13秒)  

       select * from record where  amount/30< 1000(11秒)  

       select * from record where  to_char(ActionTime,'yyyymmdd')='19991201'(10秒)  

由于where子句中对列的任何操作结果都是在SQL运行时逐行计算得到的,因此它不得不进行表扫描,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化器优化,使用索引,避免表扫描,因此将SQL重写如下: 

       select * from record where CardNo like  '5378%'(< 1秒)

       select * from record where amount  < 1000*30(< 1秒)

       select * from record where ActionTime= to_date ('19991201' ,'yyyymmdd')(< 1秒)

差别是很明显的!

© 著作权归作者所有

东湖畔新家
粉丝 1
博文 170
码字总数 31582
作品 0
杭州
后端工程师
私信 提问
SQL性能第2篇:查询分析和访问路径制定

女主宣言 在SQL性能概述的第一部分中,我们研究了关系优化及其影响因素。在今天的文章中,我们将注意力转向查询分析以及SQL转换为可执行代码的方式。希望对大家在SQL性能优化方面有所帮助。 ...

ZVAyIVqt0UFji
2018/12/18
0
0
Oracle性能优化(SQL)

尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替。 不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代。 Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行...

遵从本心
2013/08/12
0
0
ORACLE将执行过的SQL语句存放在内存的共享池

Oracle SQL性能优化深入浅出 ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享。当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执...

技术小甜
2017/11/09
0
0
Oracle性能优化,组合索引查询

在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。 组合索引的使用存在着一定的局限,只有在谓词中出现全部索引列时才能使用效率最高的index unique scan, 否则谓词中必须包含...

郑加威
2017/03/01
0
0
Oracle数据库SQL语句性能调整的基本原则

这篇论坛文章(赛迪网技术社区)详细的介绍了Oracle数据库SQL语句性能调整的基本原则,具体内容请参考下文。 一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句...

rockypeng
2013/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

“旧城改造”的背后——银泰新零售阿里云解决方案(上)

相关免费课程《银泰新零售上云解决方案精讲》上线中 立足实战 讲透经典案例 助你快速理解新零售 第一节学习地址 第二节学习地址 传统线下商业体上云的案例 与其说银泰上云,倒不如说银泰“旧...

阿里云官方博客
10分钟前
0
0
记一次升级Oracle驱动引发的死锁

问题描述 近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了2次“死锁(deadlock)”的问题,部分关键日志如下: Found one Java-level deadlock:...

ksfzhaohui
12分钟前
2
0
MySQL 中的 information_schema 数据库

欢迎查看原文 - 本博客仅记录 https://blog.csdn.net/kikajack/article/details/80065753 -- 是否开启bin_log日志: off为关闭-- show variables like 'log_%'; show variables like '......

莫库什勒
20分钟前
0
0
Random在高并发下的缺陷以及JUC对其的优化

Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了。但并不是每个人都知道...

编程SHA
24分钟前
0
0
T5大牛带你解析:如何实现分布式技术

1.分布式事务 2. 分布式锁 Java 原生 API 虽然有并发锁,但并没有提供分布式锁的能力,所以针对分布式场景中的锁需要解决的方案。 分布式锁的解决方案大致有以下几种: 基于数据库实现 基于缓...

李红欧巴
36分钟前
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部