2010-07-22 116 views
0

我在一個數據庫表中創建了過濾的唯一索引。根據我的研究,如果我想要做的asp.net我需要如果我把上面的功能在以下設置操作轉向我的連接SQL Server 2008中的篩選索引

SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 

該表上的任何操作,會是怎樣的效果呢?它是否導致任何問題?還有其他更好的選擇嗎?

在此先感謝

回答

2

爲您正確使用索引您需要的三個項目都沒有。決定索引是否被使用的唯一最大因素是查詢的構造,並且它是查詢優化器引擎的評估。

不過,去與你帶來了什麼了,讓我們檢查使用三種:ON

SET CONCAT_NULL_YIELDS_NULL讓我們藉此聲明SET @Name = @FirstName + ' ' + @LastName

如果@firstName爲NULL或者@LastName是NULL,那麼你的@Name將是NULL。如果你不希望這種行爲 - 你要像NULL空字符串被處理,那麼你SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_PADDING ON

這將在未來被廢棄。在SQL Server上,默認設置爲ON。事實上,在新版本的SQL Server上,你甚至不能把它關閉。

這會影響varchar列中的數據存儲 - 例如,如果將其打開,則值TEST將與尾隨空格一起存儲(如果將其關閉爲OFF),則會刪除尾隨空格。同樣的事情適用於將零尾隨到VarBinary列中。

SET ANSI_WARNINGS ON

這是分組和彙總。如果你在任何聚合函數中有一個NULL值,並且你想知道有一個NULL值,那麼你將它設置爲ON。如果你不關心從聚集中消除NULL,那麼你把它關閉。