Скажем, у меня есть таблица:Будет ли SQL Server использовать составной индекс, если только один столбец находится в предложении WHERE?
CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)
Запросы обычно на FirstName или LastName, но и на FirstNameиLastName.
Если я создаю некластеризованной индекс FirstName и другой на LastName, то мои первые два запроса удовлетворяются. По-видимому, SQL Server будет использовать index intersection для другого запроса.
В качестве альтернативы, если у меня есть indexees на (FirstName) и на (имя, фамилия), может/ли SQL Server использовать второй индекс для запросов на только LastName, а также запросов на обоих?
Сохраняет ли SQL Server составные части индекса слева направо или справа налево? Другими словами: построит ли он ключ как LastNameFirstName или FirstNameLastName? Или можно выбрать произвольно?
Я имею в виду: при построении ключа для ввода B-дерева, является ключом для составного индекса (A, B, C), хранящегося как (A, B, C) или (C, B, A), или это до SQL Server, чтобы выбрать один произвольно? –
Я думаю, что он имеет в виду, как строится ключ. Anwer слева направо, точно так же, как вы определяете ключ. И поэтому он не может использоваться для поиска фамилии. –