存档

文章标签 ‘效率’

优化Oracle的SQL语句(六)

2009年6月18日 admin 没有评论

第十五 基于函数的索引要求等式匹配

上面的例子中,我们创建了基于函数的索引,但是如果执行下面的查询:

select * from emp where substr(ename,1,1)=’S’ 阅读全文…

相关日志

分类: Oracle 标签: , , , , ,

优化Oracle的SQL语句(五)

2009年6月18日 admin 没有评论

第十一 like子句尽量前端匹配

因为like参数使用的非常频繁,因此如果能够对like子句使用索引,将很高的提高查询的效率。

例6:select * from city where name like ‘%S%’

以上查询的执行计划用了全表扫描(TABLE ACCESS FULL),如果能够修改为:

select * from city where name like ‘S%’阅读全文…

相关日志

分类: Oracle 标签: , , , , ,

优化Oracle的SQL语句(四)

2009年6月18日 admin 没有评论

第七 索引提高数据分布不均匀时查询效率

索引的选择性低,但数据的值分布差异很大时,仍然可以利用索引提高效率。A、数据分布不均匀的特殊情况下,选择性不高的索引也要创建。

表ServiceInfo中数据量很大,假设有一百万行,其中有一个字段DisposalCourseFlag,取值范围为枚举值:[0,1,2,3,4,5,6,7]。按照前面说的索引建立的规则,“选择性不高的字段不应该建立索引,该字段只有8种取值,索引值的重复率很高,索引选择性明显很低,因此不建索引。然而,由于该字段上数据值的分布情况非常特殊,具体如下表: 阅读全文…

相关日志

分类: Oracle 标签: , , , , ,

优化Oracle的SQL语句(三)

2009年6月18日 admin 没有评论

第四 尽量去掉”IN”、”OR”

含有”IN”、”OR”的Where子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。  

例4: select count(*) from stuff where id_no in(‘0′,’1′)(23秒)

可以考虑将in子句分开:   阅读全文…

相关日志

分类: Oracle 标签: , , , ,

优化Oracle的SQL语句(二)

2009年6月17日 admin 没有评论

第一 避免对列的操作

任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数。  
例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢:   阅读全文…

相关日志

分类: Oracle 标签: , , , , ,

优化Oracle的SQL语句(一)

2009年6月17日 admin 没有评论

一个系统执行效率的高低包括很多因素,而一旦涉及到数据库,那么SQL语句的执行效率就是重中之重,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连、超时,严重影响业务的正常运行。因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。 阅读全文…

相关日志

分类: Oracle 标签: , , , , ,
Easy AdSense by Unreal