Tôi đang có một thời gian khá khó khăn trong việc tìm kiếm lý do tại sao việc thêm một chỉ mục trên khóa ngoại của một bảng đang làm chậm lại quan điểm của đồng nghiệp của tôi. Khung nhìn này bao gồm một số khung nhìn được đóng gói với phép nối ngoài và nối bên trong. Tôi đã cố gắng loại bỏ từng cái một để tìm ra vấn đề ở đâu, nhưng tôi không thể nói, nó dường như không xuất phát từ một cái nhìn cụ thể nhưng nhiều hơn từ tất cả chúng.Làm cách nào một chỉ mục có thể làm chậm một câu lệnh chọn?
Tôi biết các chỉ mục có thể làm chậm quá trình chèn hoặc chúng đang chiếm kích thước trên ổ cứng, nhưng tôi không bao giờ đọc ở bất kỳ đâu mà chúng có thể chịu trách nhiệm làm chậm chế độ xem. Sự thật là khi tôi làm:
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO
select top 20 * from MyView
Mất 20 giây với chỉ mục và 9 không có.
CREATE NONCLUSTERED INDEX [IX_MyField] ON [dbo].MyTable
(
[MyField] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
Bạn đã xem kế hoạch truy vấn để xem điều gì đang xảy ra? –
Về mặt lý thuyết, chỉ số làm cho trình tối ưu hóa xem xét nhiều tùy chọn hơn khi xây dựng kế hoạch, nếu nó quyết định cần quét bảng thì có thể làm chậm nó xuống. Tuy nhiên, tôi nghi ngờ rằng sẽ có một hiệu ứng đo lường được. Bạn có thể đăng truy vấn bị ảnh hưởng không? – JohnFx
Bạn có nói rằng chế độ xem là chế độ xem gọi lượt xem (hoặc tôi đã hiểu sai) không? Bạn cần phải dừng lại ngay lập tức nếu có. Các chế độ xem này phải thực hiện đầy đủ tất cả các chế độ xem thấp hơn để hoạt động và cực kỳ chậm khi có một lượng lớn dữ liệu liên quan. Nó là một mẫu đối tượng SQL để có chế độ xem gọi các chế độ xem khác. – HLGEM