问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...语句执行效率的方法,从哪些方面,sql语句性能如何分析

发布网友 发布时间:2024-10-13 03:03

我来回答

1个回答

热心网友 时间:2024-10-14 00:58

1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。
调整不良SQL通常可以从以下几点切入:
? 检查不良的SQL,考虑其写法是否还有可优化内容
? 检查子查询 考虑SQL子查询是否可以用简单连接的方式进行重新书写
? 检查优化索引的使用
? 考虑数据库的优化器

2. 避免出现SELECT * FROM table 语句,要明确查出的字段。

3. 在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。

4. 查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,这样查询时只进行索引扫描,不读取数据块。

5. 在判断有无符合条件的记录时建议不要用SELECT COUNT (*)和select top 1 语句。

6. 使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,并尽量在SQL语句的最里层进行限定,以减少数据的处理量。

7. 应绝对避免在order by子句中使用表达式。

8. 如果需要从关联表读数据,关联的表一般不要超过7个。

9. 小心使用 IN 和 OR,需要注意In集合中的数据量。建议集合中的数据不超过200个。

10. <> 用 < 、 > 代替,>用>=代替,<用<=代替,这样可以有效的利用索引。

11. 在查询时尽量减少对多余数据的读取包括多余的列与多余的行。

12. 对于复合索引要注意,例如在建立复合索引时列的顺序是F1,F2,F3,则在where或order by子句中这些字段出现的顺序要与建立索引时的字段顺序一致,且必须包含第一列。只能是F1或F1,F2或F1,F2,F3。否则不会用到该索引。

13. 多表关联查询时,写法必须遵循以下原则,这样做有利于建立索引,提高查询效率。格式如下select sum(table1.je) from table1 table1, table2 table2, table3 table3 where (table1的等值条件(=)) and (table1的非等值条件) and (table2与table1的关联条件) and (table2的等值条件) and (table2的非等值条件) and (table3与table2的关联条件) and (table3的等值条件) and (table3的非等值条件)。
注:关于多表查询时from 后面表的出现顺序对效率的影响还有待研究。

14. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。例如:select name from customer where customer_id in ( select customer_id from order where money>1000)。应该用如下语句代替:select name from customer inner join order on customer.customer_id=order.customer_id where order.money>100。

15. 在WHERE 子句中,避免对列的四则运算,特别是where 条件的左边,严禁使用运算与函数对列进行处理。比如有些地方 substring 可以用like代替。

16. 如果在语句中有not in(in)操作,应考虑用not exists(exists)来重写,最好的办法是使用外连接实现。

17. 对一个业务过程的处理,应该使事物的开始与结束之间的时间间隔越短越好,原则上做到数据库的读操作在前面完成,数据库写操作在后面完成,避免交叉。

18. 请小心不要对过多的列使用列函数和order by,group by等,谨慎使用disti软件开发t。

19. 用union all 代替 union,数据库执行union操作,首先先分别执行union两端的查询,将其放在临时表中,然后在对其进行排序,过滤重复的记录。
当已知的业务逻辑决定query A和query B中不会有重复记录时,应该用union all代替union,以提高查询效率。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
容易发财的房地产中介公司名字 我想对自己的房子进行房产评估,去哪里办理,需要... 改字体的时候不小心改错了,全变成格仔了怎么办 手机文件不小心改错名字了怎么办 女生每天早晚各跑步一个小时,配合饮食,一个月瘦多少? 每天早晚各慢跑一小时.一个月能瘦多少斤 爱剪辑怎么去水印 给视频去水印方法 游戏本关机时可以晃吗? 笔记本玩游戏CPU温度高,会花屏 打剑网三一小时声音大,发热,还能继续吗? 奥比岛圣精灵处女莎莎的考验怎样闯拜托了各位 谢谢 奥比岛怎么才能得到莎莎公主的塑像 青岛同心圆电捕焦油器处理效果怎么样 奥比岛 莎莎的歌 奥比岛会唱歌的大贝壳的歌叫什么名字 智灯已灭馀空烬,犹自光明照十方。 山色依然僧已亡,竹间疏磬隔残阳。 奥比岛 美人鱼莎莎的主人是谁 山东480分的公办二本大学 奥比岛莎莎的歌怎么唱不完啊 山东纯文480分能上什么大学 奥比岛如何将莎莎甩掉 新鲜的菊苣怎么吃 怎样安装4k歌华机顶盒 为什么谜面“死节从来岂顾勋”的答案是“绝世轻功”啊?求解释! 相看白刃血纷纷死节从来岂顾勋的意思 相看白刃血纷纷死节从来岂顾勋是什... 英雄联盟ap什么意思 英雄联盟通用符文大全 英雄联盟AP通用符文呢? 新鲜生蚝保存较简单方法 生蚝怎么保存较新鲜 lol通用ap符文是什么?肉天赋符文是什么? 微信运动如何关闭(微信运动如何关闭计步) 诺亚传说与征途2哪个玩的人更多,哪个更火(枪手走开) 有什么游戏好玩!!! 请问什么游戏做生意不和等级挂钩的当然钱还很重要的游戏我不喜欢练级只... 咖啡面面的那种,在桶里成一块了,会不会是坏了 山东地区 主要玩什么免费网游,不要回合制的!(和征途2差不多的就... 燃气灶上的火焰很大怎么办 燃气灶烧得很热怎么回事 ...有点摇滚的 男生唱的 开头是不同的调 噔噔噔噔 噔噔噔噔 噔噔噔噔 噔... ...副歌好像有两句同样的;:节奏是:噔噔噔噔噔噔嘿,噔噔噔噔噔噔嘿... 艾丽是怎样和洪世贤离婚的 ...噔 噔噔噔 噔噔噔噔 中间一段和最后再有一次 有一首男生唱的歌,旋律是什么,噔噔噔,噔噔噔噔,噔噔噔噔瞪噔噔噔, 帮忙介绍个玩魔兽世界不卡的显卡 大闸蟹活时速冻能保存多久 求太阳的后裔里的插曲 企业帮员工上交的公积金,在缴税的时候扣除吗? 二百分之一百零七用小数怎么表示 戴尔笔记本window7电脑Administrator密码忘记怎样解决 出重做系统之 ... 戴尔1400手提电脑开机用户名密码遗忘怎么办