2010-07-22 2 views
0

Я создал отфильтрованный уникальный индекс в одной моей таблице базы данных. Согласно моим исследованиям, если я хочу, чтобы делать какие-либо операции в этой таблице из asp.net мне нужно, чтобы включить следующую операцию набора для моего соединенияОтфильтрованный индекс в SQL Server 2008

SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 

Если я включить вышеуказанные функции, какой будет эффект? Это проблема? есть ли другой лучший вариант?

Заранее спасибо

ответ

2

Ни один из трех элементов, которые необходимы для Вас, чтобы правильно использовать индекс. Самый большой фактор, определяющий, будет ли использоваться индекс, или нет, - это построение запроса, а его оценка - механизмом оптимизатора запросов.

Но идти с того, что вы воспитаны, давайте проверим использование три:

SET CONCAT_NULL_YIELDS_NULL ON

Давайте это заявление, 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 НА

Это группировки и в общей сложности. Если у вас есть значение NULL в любой агрегатной функции, и вы хотите знать, что существует значение NULL, вы устанавливаете его в положение ON. Если вы не хотите знать, что NULL был исключен из совокупности, вы можете отключить его.