扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网 10633 来源:天新网 2008年3月24日
关键字: SQL Mssql SQL Server 数据库
◆SQL书写的影响
同一功能同一性能不同写法SQL的影响
如一个SQL在A程序员写的为
|
B程序员写的为
|
C程序员写的为
|
D程序员写的为
|
以上四个SQL在Oracle分析整理之后产生的结果及执行的时间是一样的,但是从ORACLE共享内存SGA 的原理,可以得出ORACLE对每个SQL 都会对其进行一次分析,并且占用共享内存,如果将SQL的字符串及格式写得完全相同则ORACLE只会分析一次,共享内存也只会留下一次的分析结果,这不仅可以减少分析SQL的时间,而且可以减少共享内存重复的信息,ORACLE也可以准确统计SQL的执行频率。
◆WHERE后面的条件顺序影响
WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响,如
|
以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的时候99%条记录都进行dy_dj及xh_bz的比较,而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较,以此可以得出第二条SQL的CPU占用率明显比第一条低。
◆查询表顺序的影响
在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉。(注:如果对表进行了统计分析,ORACLE会自动先进小表的链接,再进行大表的链接)
◆SQL语句索引的利用
对操作符的优化(见上节)
对条件字段的一些优化
◆采用函数处理的字段不能利用索引,如:
|
进行了显式或隐式的运算的字段不能进行索引,如:
|
注:此条件对hbs_bh 进行隐式的to_number转换,因为hbs_bh字段是字符型。
条件内包括了多个本表的字段运算时不能进行索引,如:
|
应用ORACLE的HINT(提示)处理
提示处理是在ORACLE产生的SQL分析执行路径不满意的情况下要用到的。它可以对SQL进行以下方面的提示
◆目标方面的提示:
|
◆执行方法的提示:
|
◆索引提示:
INDEX(TABLE INDEX)(使用提示的表索引进行查询)
其它高级提示(如并行处理等等)
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者