sql语句优化总结

sql语句优化总结

ID:30779452

大小:70.50 KB

页数:7页

时间:2019-01-03

sql语句优化总结_第1页
sql语句优化总结_第2页
sql语句优化总结_第3页
sql语句优化总结_第4页
sql语句优化总结_第5页
资源描述:

《sql语句优化总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数据库优化总结一、冃IJ旨1二、在SELECT子句屮避免使用1三、删除重复记录1四、计算记录条数2五、减少对表的查询2六、EXISTS与IN使用2七、使用索引3八、UNION与UNIONALL的使用4九、驱动表的选择5十、Where语句中条件的川页序5H、使用where代替having语句5十二、使用表的别名5十三、表记录删除6十四、Decode函数使用6十五、尽量少用子查询6十六、SQL语句拆分6十七、SQL语句屮参数的使用7十八、解释计划7—、刖舌下面是对使用ORACLE的SQL语句的一些优化总结,借鉴了一些资料和自己的经验

2、总结,只是部分优化方法,甚至可能还会有不准确的地方,希望看官给予补充我修正,以提高大家写SQL语句的水平。二、在SELECT子句中避免使用“*'当你想在SELECT子句中列岀所有的COLUMN吋,使用动态SQL列引用是一个方便的方法•不幸的是,这是一个非常低效的方法.实际上,ORACLE在解析的过程中,会将'*'依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间.三.删除重复记录最高效的删除重复记录方法(因为使用了ROWID)DELETEFROMEMPEWHEREE.ROWID>(SELECTMIN

3、(X.ROWID)FROMEMPXWHEREX.EMP_NO=E.EMP_NO)Oracle的ORW1D用来唯一标识表中的一条记录,是这条数据在数据库中存放的物理地址四、计算记录条数计算记录数一般count(*),count(1),count(索引)三种写法,使用count(索引)方法是最快的,另两种哪个快说法不一,但通过实际测试差不太多五、减少对表的查蓬在写SQL语句吋要减少对表的查询,即能通过对表一次查询取得结果就不要查两次。例1:Select*fromclmbOlcWherecjxsdm=(selectmax(cjxsdm

4、)fromclmblO)Andcsqdh=(selectmin(csqdh)fromclmblO)Whereid=833997可改成Select*fromclmbOlcWhere(cjxsdm,csqdh)=(selectmax(cjxsdm),min(csqdh)fromclmblO)whereid=833997;更新也一样UpdateclmbOlcset(cjxsdm,csqdh)=(selectmax(cjxsdm),min(csqdh)fromclmblO)Whereid=833997;当然此例还有其它写法,在此拿出只是

5、说明观点例2:UpdateclmbOlcsetcdjzt二Twhereid=833997;Selectnhjjeinton_hjjefromclmbOlcwhereid=833997;以上两语句可合成一个UpdateclmbOlcsetcdjzt二Twhereid=833997returningnhjjeinton_hjje;六、EXISTS与IN使用对于这两个操作符,通常认为EXISTS会比IN效率高,特别是EXISTS的子查询语句可用到索引时会比IN效率高Oracle在处理这两个操作时处理如下:IN:Oracle将IN后面的

6、子查询语句调入到内存,然后排序,如果记录多会非常占用系统资源EXISTS:在每次查询时调用一次子查询语句,所以就要保证子查询语句能使用索引,否则就会全表扫描,如果记录数很多那是很可怕的事情,会产生迪卡尔乘积结论:记录小的时候用哪个都对效率没有多大影响,对于记录大时一定要使用EXISTS,并保存子查询使用索引对于NOTEXISTS和NOTIN—定要选用NOTEXISTS,还可使用(外连接+判断为空)七、使用索引对于数据量大的表一定要建立适当的索引,正确的使用索引可以级大的提高数据检索效率,在写SQL语句时要考虑表索引的使用,但索引

7、的缺点一是增加物理空间的占用,二是对表的增、删、改会增加一次索引的增、删、改操作,所以对于大表要建立并使用索引,但不能过多使用索引要注意以下儿点:1・要按索引列构造SQL语句的where条件才能使用到索引2.使用不等于操作符则不能使用索引例:selectcoll,col2fromtable1wherecoll<>'AA'如果列coll是索引则此写法不能使用索引,同样还有notinCAAJ那出现这种问题如何解决呢?那就要改变这种写法,比如判断的条件值有'AA','BB','CC'则条件改写成coll=orcoll=83.使用isN

8、ULL则不能使用索引如上例:wherecollisNULL不会使用索引对于索引列要避免出现NULL值4.LIKE操作符的使用对于LIKE使用时后而的条件前而不能有通配符,否则不能使用索引selectcoll,col2fromtable1wherecolllike

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。