SQLServer性能优化之改写SQL语句

SQLServer性能优化之改写SQL语句,第1张

概述性能优化之SQL语句改写 有这样一条SQL,在系统性能视图中显示执行时间30秒,单独拿出来执行时间6秒 SELECT *   FROM TABLEA  WHERE COND1 AND (A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM TABLEB WHERE ...)         OR         A.

性能优化之SQL语句改写 有这样一条sql,在系统性能视图中显示执行时间30秒,单独拿出来执行时间6秒 SELECT *   FROM tableA  WHERE COND1 AND (A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'Y','') FROM tableB WHERE ...)         OR         A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM tableB WHERE ...)                                          )  ORDER BY 1 优化步骤 首先把COND1之前的语句拿出来执行约0秒   其次分别执行每个单独的子查询(NOT IN中的子查询)语句也是0秒 再次把OR的语句分别执行,发现执行速度均是0秒 分析问题可能出现在两个子查询的合并上,干脆直接把SQL语句改写成两个独立的语句再进行UNION试试看,如下格式 SELECT * FROM (   SELECT * FROM tableA WHERE COND1 AND A.FIELD2<>6 AND A.FIELD1 NOT IN (SELECT REPLACE(FIELD1,'') FROM tableB WHERE ...)   UNION   SELECT * FROM tableA WHERE COND1 AND A.FIELD2=6 AND A.FIELD1 NOT IN (SELECT FIELD1 FROM tableB WHERE ...) )A ORDER BY 1   执行后0秒,OK!

总结

以上是内存溢出为你收集整理的SQLServer性能优化之改写SQL语句全部内容,希望文章能够帮你解决SQLServer性能优化之改写SQL语句所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存