优化_sql_视图_索引_plsql总结.doc

优化_sql_视图_索引_plsql总结.doc

ID:59228826

大小:28.00 KB

页数:8页

时间:2020-09-09

优化_sql_视图_索引_plsql总结.doc_第1页
优化_sql_视图_索引_plsql总结.doc_第2页
优化_sql_视图_索引_plsql总结.doc_第3页
优化_sql_视图_索引_plsql总结.doc_第4页
优化_sql_视图_索引_plsql总结.doc_第5页
资源描述:

《优化_sql_视图_索引_plsql总结.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、sql优化1、SELECT子句中避免使用*,尽量应该根据业务需求按字段进行查询2、尽量多使用COMMIT如对大数据量的分段批量提交释放了资源,减轻了服务器压力3、在写sql语句的话,尽量保持每次查询的sql语句字段用大写,因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行4、用UNION-ALL替换UNION,因为UNION-ALL不会过滤重复数据,所执行效率要快于UNION,并且UNION可以自动排序,而UNION-ALL不会5、避免在索引列上使用计算和函数,这样索引就不

2、能使用Sql优化精简版:1.(重点)(必须说)SELECT语句中避免使用*,尽量应该根据业务需求按字段进行查询举例:如果表中有个字段用的是clob或者是blob这种大数据字段的话,他们的查询应该根据业务需要来进行指定字段的查询,切记勿直接用*2.(重点)删除重复记录(oracle):最高效的删除重复记录方法(因为使用了ROWID)例子:DELETEFROMEMPEWHEREE.ROWID>(SELECTMIN(X.ROWID)FROMEMPXWHEREX.EMP_NO=E.EMP_NO);3.用

3、>=替换>如一个表有100万记录,一个数值型字段A,A=0时,有30万条;A=1时,有30万条;A=2时,有39万条;A=3时,有1万记录。那么执行A>2与A>=3的效果就有很大的区别了,因为A>2时,ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引。4.(重点)尽量多使用COMMIT如对大数据量的分段批量提交5.(重点)用NOTEXISTS或(外连接+判断为空)方案替换NOTIN操作符此操作是强列推荐不使用的,因为它不能应用表的索引。推荐方案:用N

4、OTEXISTS或(外连接+判断为空)方案代替6.(重点必须说)LIKE操作符(大数据的全文检索使用luncene)(solr)因为使用like不当,会导致性能问题,原因是like在左右两边都有%的时候,不会使用索引。如LIKE'%5400%'这种查询不会引用索引,而LIKE'X5400%'则会引用范围索引。一个实际例子:查询营业编号YY_BHLIKE'%5400%'这个条件会产生全表扫描,如果改成YY_BHLIKE'X5400%'ORYY_BHLIKE'B5400%'则会利用YY_BH的索引进

5、行两个范围的查询,性能肯定大大提高。7.(重点,必须说)避免在索引列上使用计算和函数,这样索引就不能使用举例:低效:SELECT…FROMDEPTWHERESAL*12>25000;高效:SELECT…FROMDEPTWHERESAL>25000/12;8.(重点必须说)用UNION-ALL替换UNION,因为UNION-ALL不会过滤重复数据而且不会自动排序,所执行效率要快于UNION。9.(优化,重点,3个方面a.缓存b.分段批量c.存储过程)减少访问数据库的次数举例:如果批量删除多条数据,

6、可以用deletefromtableNamewhereidin(1,2,3)而不要用多条delete语句进行删除10.(重点必须说)用TRUNCATE替代DELETETRUNCATE不记录日志,DELETE记录日志,所以TRUNCATE要快于DELETE但是一旦用TRUNCATE进行删除就不能进行恢复,TRUNCATE是删除整张表的数据不能加where条件。=========================================mysql,sqlserver中如果id为自增类型,那么如

7、果用TRUNCATE删除,则id字段再插入数据时从1开始,如果delete删除的话,则从删除之前的id的值继续增长。一、视图优化1.为视图建立索引:视图太复杂建不起索引2.重写视图优化逻辑:出错的风险太大,现在的逻辑是经过复杂验证,保证数据是正常的,如果重写逻辑出错的风险太大3.把视图数据写入表(以表替换视图),对表查询:对表查询性能会明显提高,但会带来数据不同步问题,数据的实时性要求很高,为了保证表与视图同步,太频繁同步操作性能反倒慢了,同步一次很费时间二、Plsql优化1.去掉不必要的大型表

8、的全表扫描2.缓存小型表的全表扫描3.检验优化索引的使用4.检验优化的连接技术5.尽可能减少执行计划的Cost四、索引优化(1)    选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersectiontable)作为基

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

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

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