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

SQL 语句优化,该怎么处理

发布网友 发布时间:2022-04-21 06:34

我来回答

1个回答

热心网友 时间:2023-10-15 23:07

1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。 \r\n调整不良SQL通常可以从以下几点切入: \r\n? 检查不良的SQL,考虑其写法是否还有可优化内容 \r\n? 检查子查询 考虑SQL子查询是否可以用简单连接的方式进行重新书写 \r\n? 检查优化索引的使用 \r\n? 考虑数据库的优化器 \r\n\r\n2. 避免出现SELECT * FROM table 语句,要明确查出的字段。 \r\n\r\n3. 在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。 \r\n\r\n4. 查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,这样查询时只进行索引扫描,不读取数据块。 \r\n\r\n5. 在判断有无符合条件的记录时建议不要用SELECT COUNT (*)和select top 1 语句。 \r\n\r\n6. 使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,并尽量在SQL语句的最里层进行限定,以减少数据的处理量。 \r\n\r\n7. 应绝对避免在order by子句中使用表达式。 \r\n\r\n8. 如果需要从关联表读数据,关联的表一般不要超过7个。 \r\n\r\n9. 小心使用 IN 和 OR,需要注意In集合中的数据量。建议集合中的数据不超过200个。 \r\n\r\n10. <>用 < 、 >代替,>用>=代替,<用<=代替,这样可以有效的利用索引。 \r\n\r\n11. 在查询时尽量减少对多余数据的读取包括多余的列与多余的行。 \r\n\r\n12. 对于复合索引要注意,例如在建立复合索引时列的顺序是F1,F2,F3,则在where或order by子句中这些字段出现的顺序要与建立索引时的字段顺序一致,且必须包含第一列。只能是F1或F1,F2或F1,F2,F3。否则不会用到该索引。 \r\n\r\n13. 多表关联查询时,写法必须遵循以下原则,这样做有利于建立索引,提高查询效率。格式如下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的非等值条件)。 \r\n注:关于多表查询时from 后面表的出现顺序对效率的影响还有待研究。 \r\n\r\n14. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。例如: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。 \r\n\r\n15. 在WHERE 子句中,避免对列的四则运算,特别是where 条件的左边,严禁使用运算与函数对列进行处理。比如有些地方 substring 可以用like代替。 \r\n\r\n16. 如果在语句中有not in(in)操作,应考虑用not exists(exists)来重写,最好的办法是使用外连接实现。 \r\n\r\n17. 对一个业务过程的处理,应该使事物的开始与结束之间的时间间隔越短越好,原则上做到数据库的读操作在前面完成,数据库写操作在后面完成,避免交叉。 \r\n\r\n18. 请小心不要对过多的列使用列函数和order by,group by等,谨慎使用disti软件开发t。 \r\n\r\n19. 用union all 代替 union,数据库执行union操作,首先先分别执行union两端的查询,将其放在临时表中,然后在对其进行排序,过滤重复的记录。 \r\n当已知的业务逻辑决定query A和query B中不会有重复记录时,应该用union all代替union,以提高查询效率。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样委婉的询问他人帮忙处理的进展情况? 爱维他叶酸多少钱一盒?性价比怎么样? 叶酸哪个牌子好排行榜 在什么情况下,你应该问一下对方的意见? 哪些叶酸片性价比高? 哪些品牌的叶酸对孕妇比较好? ...apk的,为什么通过qq传到平板上后面又多了个rename后缀 溴酸钾物质的理化常数 活性叶酸哪个牌子的效果最好?为什么孕妈们都吃活性叶酸片? 适合孕妇吃的含活性叶酸的叶酸片有哪些呢? 数据库中怎么优化SQL语句? 如何优化SQL语句提高数据库效率 如何优化sql语句? sql语句性能如何优化?? SQL语句怎么可以优化呢 SQL 语句优化问题 sql语句的优化 怎样进行sql数据库的优化 SQL语句效率优化 谁能告诉我怎样优化sql语句? 如何提高sql语句的执行效率 什么叫SQL语句的优化 如何进行SQL性能优化 优化sql 语句的几种方式 如何优化SQL语句 SQL语句如何优化? SQL语句的几种优化方法 开发中,SQL语句优化有哪些方法? 三种用ppt创建演示文稿的方法 列举powerpoint2010创建演示文稿的三种方式 提手旁加共念什么 一个提手加共念什么 提手上加共读什么 提手旁加一个共字念什么 一个提手一个共念什么 一个提手两个巳和一个共是什么字? 一个提手,右上头两个巳,右下头一个共。咋读。 共字可以加什么偏旁 一个提手一个龙念什么 提手加个取念什么 提手加出念什么 提手加彖念什么??? 提手旁加个大字读啥 左边一个提手,右边一个台念什么啊? 一个提手,右边是倍的右边,组在一起是什么 耳刀加个共念什么 电脑扬声器怎么设置,九个步骤方便操作 如何设置电脑前后声音都有输出 电脑的扬声器在哪里设置 笔记本电脑扬声器设置怎么操作