Mam 2 tabele tb_player1
i tb_player2
.Kiedy używać indeksu złożonego i wskaźnika pokrycia w programie SQL Server?
CREATE TABLE tb_player1
(
pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
first_name CHAR(16),
last_name CHAR(16),
age INT
)
CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player1(first_name, last_name)
CREATE TABLE tb_player2
(
pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
first_name CHAR(16),
last_name CHAR(16),
age INT
)
CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player2(first_name)
INCLUDE (last_name)
tb_player1
ma wskaźnik kompozytowego i tb_player2
obejmował kolumnowej (obejmujące wskaźnik).
uruchomić następujące SQL przeciwko tb_player1
i tb_player2
, ale rzeczywiste wykonanie planu tb_player1
i tb_player2
są takie same.
INSERT INTO tb_player1 VALUES('kenny', 'lee', 29)
INSERT INTO tb_player1 VALUES('rose', 'chao', 27)
INSERT INTO tb_player1 VALUES('mark', 'chao', 25)
INSERT INTO tb_player2 VALUES('kenny', 'lee', 29)
INSERT INTO tb_player2 VALUES('rose', 'chao', 27)
INSERT INTO tb_player2 VALUES('mark', 'chao', 25)
select first_name, last_name from tb_player1 where first_name = 'kenny'
select first_name, last_name from tb_player2 where first_name = 'kenny'
select first_name, last_name from tb_player1 where last_name = 'lee'
select first_name, last_name from tb_player2 where last_name = 'lee'
select first_name, last_name from tb_player1 where first_name = 'kenny' AND last_name = 'lee'
select first_name, last_name from tb_player2 where first_name = 'kenny' AND last_name = 'lee'
select first_name, last_name from tb_player2 where last_name = 'lee' AND first_name = 'kenny'
select first_name, last_name from tb_player1 where last_name = 'lee' AND first_name = 'kenny'
Kiedy używać indeksu złożonego i wskaźnika pokrycia w programie SQL Server? Jakie są różnice między nimi? Dlaczego plan wykonania nie wygląda inaczej.
http://stackoverflow.com/questions/1589818/a-covered-index-formed-by-a-composite-index-or-index-with-included-columns –
@Kenny_Lee plany nie są dokładnie tak samo, jeśli spojrzysz na operację szukania indeksu w dwóch ostatnich przykładach, zobaczysz, że pierwsze zapytanie szuka imienia i nazwiska, podczas gdy drugie szuka tylko imienia. Nie ma to znaczenia w twoim przypadku, ponieważ masz bardzo mało wierszy, ale może to mieć wpływ, jeśli masz dużą liczbę pasujących wierszy. –