SQL优化原则和技巧课件.ppt

SQL优化原则和技巧课件.ppt

ID:57059317

大小:230.00 KB

页数:26页

时间:2020-07-30

SQL优化原则和技巧课件.ppt_第1页
SQL优化原则和技巧课件.ppt_第2页
SQL优化原则和技巧课件.ppt_第3页
SQL优化原则和技巧课件.ppt_第4页
SQL优化原则和技巧课件.ppt_第5页
资源描述:

《SQL优化原则和技巧课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQL优化原则和技巧撰写人:石霖能使查询加快的途径索引的引用SQL的优化一些函数的使用技巧索引的引用(1)当插入的数据为数据表中的记录数量的10%以上,首先需要删除该表的索引来提高数据的插入效率,当数据插入后,再建立索引。索引的引用(2)避免在索引列上使用函数或计算,在where子句中,如果索引是函数的一部分,优化器将不再使用索引而使用全表扫描。如:低效:select*fromreport_sale_accountwherehsjj*10>1000;高效:select*fromreport_sale_accountwherehsjj>1000/10;索引的引用(3

2、)尽量避免在索引列上使用not和“!=”和“<>”,索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到not和“!=”和“<>”时,就会停止使用索引而去执行全表扫描。索引的引用(4)请务必注意,检索中不要对索引列进行处理,如:TRIM,TO_DATE,类型转换等操作,破坏索引,使用全表扫描,影响SQL执行效率索引的引用(5)避免在索引列上使用ISNULL和ISNOTNULL避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引对于单列索引,如果列包含空值,索引中将不存在此记录;对于复合索引,如果每个列都为空,索引中同样不存在此记录。如果至

3、少有一个列不为空,则记录存在于索引中因为空值不存在于索引列中,所以WHERE子句中对索引列进行空值比较将使ORACLE停用该索引索引的引用(6)索引列上“>=”代替“>”低效:select*fromreport_sale_accountwherehsjj>10;高效:select*fromreport_sale_accountwherehajj>=10.000000000000001;SQL的优化技巧(1)Where子句中的连接顺序:oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前,那些可以过滤掉大量记录的

4、条件必须写在where子句的末尾。SQL的优化技巧(1)例如低效:select*fromreport_sale_accountewherehsje>5000anddzxl=‘000001’and25<(selectcount(*)fromreport_sale_accountwherecode=e.code);高效:select*fromreport_sale_accountewhere25<(selectcount(*)fromreport_sale_accountwherecode=e.code)andhsje>5000anddzxl=‘000001’;SQL

5、的优化技巧(2)删除全表时,用truncate替代delete,同时注意truncate只能在删除全表时适用,因为truncate是ddl而不是dml。例如删除掉一个100万行的数据。Truncatetablereport_sale_account;比deletefromreport_sale_account;至少快1000倍。SQL的优化技巧(3)尽量多使用commit:只要有可能就在程序中对每个delete、insert、update操作尽量多使用commit,这样系统性能会因为commit所释放的资源而大大提高。SQL的优化技巧(4)用exists替代in,

6、可以提高查询的效率。低效SELECT*FROMREPORT_SALE_ACCOUNTWHERECOM_CODENOTIN(SELECTCODEFROMBASEINFO_GOODSWHEREDZXL=‘000001’)高效SELECT*FROMREPORT_SALE_ACCOUNTWHERENOTEXISTS(SELECTCODEFROMBASEINFO_GOODSWHERECODE=REPORT_SALE_ACCOUNT.COM_CODEANDDZXL='000001')SQL的优化技巧(5)优化groupby提高groupby语句的效率,可以将不需要的记录在gr

7、oupby之前过滤掉。SQL的优化技巧(5)例如:低效:selectdzxl,avg(hsje)fromreport_sale_accountgroupbydzxlhavingdzxl=‘000001’ordzxl=’000002’;高效:selectdzxl,avg(hsje)fromreport_sale_accountwheredzxl=‘000001’ordzxl=’000002’groupbydzxl;SQL的优化技巧(5)避免使用HAVING子句,HAVING只会在检索出所有记录之后才对结果集进行过滤,这个处理需要排序、统计等操作。如果能通过WHERE

8、子句限制记

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

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

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