Tôi có 2 bảng tb_player1
và tb_player2
.Khi nào sử dụng chỉ mục tổng hợp và chỉ số bao trùm trong 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)
Các tb_player1
có một chỉ số tổng hợp và tb_player2
đã bao gồm (chỉ số bao gồm) cột.
tôi chạy các câu lệnh SQL sau đây đối với tb_player1
và tb_player2
, nhưng kế hoạch thực hiện thực tế của tb_player1
và tb_player2
đều giống nhau.
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'
Khi nào sử dụng chỉ mục tổng hợp và chỉ mục bao gồm trong SQL Server? Sự khác biệt giữa chúng là gì? Tại sao kế hoạch thực hiện của họ trông không khác nhau.
http://stackoverflow.com/questions/1589818/a-covered-index-formed-by-a-composite-index-or-index-with-included-columns –
@Kenny_Lee kế hoạch không chính xác như nhau, nếu bạn nhìn vào chỉ mục tìm kiếm hoạt động trong hai ví dụ cuối cùng, bạn sẽ thấy rằng truy vấn đầu tiên tìm kiếm trên firstname và lastname trong khi tìm kiếm thứ hai chỉ trên firstname. Điều này không quan trọng trong trường hợp của bạn bởi vì bạn có rất ít hàng, nhưng có thể có tác động nếu bạn có một số lượng lớn các hàng phù hợp. –