Да, вы правы. Но в случае, когда у вас есть таблица со многими столбцами:
A
B
C
D
..
F
, где ваш индекс первичного ключа, например, (A)
, если у вас есть второй индекс, например (B,C)
, движок может решить использовать его, если вы используете такой запрос:
CREATE TABLE dbo.StackOverflow
(
A INT
,B INT
,C INT
,D INT
,E INT
,PRIMARY KEY (A)
,CONSTRAINT IX UNIQUE(B,C)
)
SELECT A
,C
FROM dbo.StackOverflow
WHERE C = 0;
Итак, если индекс может использоваться как covering
, движок может использовать его даже вас не интересуют некоторые столбцы, потому что он решит, что будет выполнено меньше работы (меньше чтения).
В вашем случае кажется, что PK в столбце id
является лучшим выбором с комбинация со вторым индексом в столбце name
.