性能优化之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语句所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)