我有一個SQL查詢,它使用了與下面類似的一段代碼多次(大約50次)SQL語法提高了效率
這導致查詢運行緩慢。我正在尋找一種更有效的方式來編碼這個查詢。
AND ((table1.field1 <=(dbo.view1.field2) OR table1.field1 IS NULL)
我關心的所有領域都是日期。
我有一個SQL查詢,它使用了與下面類似的一段代碼多次(大約50次)SQL語法提高了效率
這導致查詢運行緩慢。我正在尋找一種更有效的方式來編碼這個查詢。
AND ((table1.field1 <=(dbo.view1.field2) OR table1.field1 IS NULL)
我關心的所有領域都是日期。
AND (table1.field1 IS NULL OR (table1.field1 <=(dbo.view1.field2))
您應根據您的查詢創建一些索引。
嘗試
AND (ISNULL(table1.field1, dbo.view1.field2) <= dbo.view1.field2)
查看你給出的片段,我不能告訴查詢的條件完全相同的效率。但是我建議你在連接表的字段和條件中使用的字段上創建一個Index
。
您應該仔細看看SQL執行計劃,這將爲您提供可視化,瞭解查詢的進展情況以及它花費的最多時間。一般來說,服務器將能夠首先優化您的查詢,因此重新安排您的WHERE
聲明不太可能有所作爲。
請參閱this post以幫助您瞭解基本知識。
隨着您提供的代碼量,很難猜測瓶頸在哪裏。但避免計算比較並隔離索引列。可以放入內存塊的索引記錄越多,查詢運行得越快。
如果您能負擔得起,爲兩列添加索引。
向我們展示您的執行計劃。 – 2012-03-06 11:22:43
這個腳本是否在存儲過程中運行? – 2012-03-06 12:09:59