Прежде всего, индекс в SQL Server может содержать не более 900 байтов в своей записи индекса.Уже одно это делает невозможным иметь индекс со всеми столбцами.
Больше всего: такой индекс вообще не имеет смысла.Чего вы пытаетесь достичь ??
Примите во внимание следующее: если у вас есть индекс на (LastName, FirstName, Street, City)
, этот индекс не сможет использоваться для ускорения запросов на
FirstName
один City
Street
Этот индекс будет полезен для поиска по
(LastName)
, или (LastName, FirstName)
, или (LastName, FirstName, Street)
, или (LastName, FirstName, Street, City)
, нона самом деле больше ничего - конечно, нет, если вы ищете просто Street
или просто City
!
Порядок столбцов в вашем индексе имеет большое значение, и оптимизатор запросов не может просто использовать любой столбецгде-то в середине индекса для поиска.
Рассмотрим вашу телефонную книгу: ее порядок, вероятно, LastName, FirstName, возможно Street.Так поможет ли этот индекс найти всех "Джо" в вашем городе?Все люди, живущие на "главной улице" ??Нет, сначала вы можете искать по LastName, а затем получить более конкретный набор данных.Наличие индекса по всему не помогает ускорить поиск по всем столбцам вообще .
Если вы хотите иметь возможность поиска по Street
- вам нужно добавить отдельныйиндекс на (Street)
(и, возможно, другой столбец или два, которые имеют смысл).
Если вы хотите иметь возможность поиска по Occupation
или как-то еще - вам нужен другой конкретный индекс для этого.
Тот факт, что ваш столбец существует в индексе, не означает, что это ускорит все поиски по этому столбцу!
Главное правило: используйте как можно меньше индексов - слишком много индексов может быть дажехуже для системы, чем отсутствие индексов вообще ... создать свою систему, отслеживать ее производительность и находить те запросы, которые стоят больше всего, - а затем оптимизировать их, например, путем добавления индексов.
Не просто слепо индексировать каждый столбец только потому, что вы можете - это гарантия плохой производительности системы - любой индекс также требует обслуживания и обслуживания, поэтому, чем больше у вас индексов, тем больше будет INSERT, UPDATE иОперации DELETE пострадают (станут медленнее), поскольку все эти индексы должны быть обновлены.