2012-03-06 62 views
1

我有一个SQL查询,它使用了与下面类似的一段代码多次(大约50次)SQL语法提高了效率

这导致查询运行缓慢。我正在寻找一种更有效的方式来编码这个查询。

AND ((table1.field1 <=(dbo.view1.field2) OR table1.field1 IS NULL) 

我关心的所有领域都是日期。

+5

向我们展示您的执行计划。 – 2012-03-06 11:22:43

+0

这个脚本是否在存储过程中运行? – 2012-03-06 12:09:59

回答

0
AND (table1.field1 IS NULL OR (table1.field1 <=(dbo.view1.field2)) 

您应根据您的查询创建一些索引。

1

尝试

AND (ISNULL(table1.field1, dbo.view1.field2) <= dbo.view1.field2) 
1

查看你给出的片段,我不能告诉查询的条件完全相同的效率。但是我建议你在连接表的字段和条件中使用的字段上创建一个Index

0

您应该仔细看看SQL执行计划,这将为您提供可视化,了解查询的进展情况以及它花费的最多时间。一般来说,服务器将能够首先优化您的查询,因此重新安排您的WHERE声明不太可能有所作为。

请参阅this post以帮助您了解基本知识。

1

随着您提供的代码量,很难猜测瓶颈在哪里。但避免计算比较并隔离索引列。可以放入内存块的索引记录越多,查询运行得越快。

0

如果您能负担得起,为两列添加索引。