Tôi có một quy trình được lưu trữ trả về kết quả từ chế độ xem được lập chỉ mục thông qua chỉ mục bao phủ. Thông thường, nó chạy nhanh (~ 10ms), đôi khi nó có thể chạy tới 8 giây.
Đây là một ví dụ thực thi ngẫu nhiên (lưu ý: đây không phải là một cách chậm, nhưng văn bản truy vấn giống với giá trị được truyền qua):
declare @p2 dbo.IdentityType
insert into @p2 values(5710955)
insert into @p2 values(5710896)
insert into @p2 values(5710678)
insert into @p2 values(5710871)
insert into @p2 values(5711103)
insert into @p2 values(6215197)
insert into @p2 values(5710780)
exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2
Đây là XUÂN:
ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus]
@LocationIds IdentityType READONLY,
@StatusType TINYINT
AS
BEGIN
SET NOCOUNT ON;
SELECT -- lots of fields
FROM [dbo].[ListingSearchView][a] WITH (NOEXPAND)
INNER JOIN @LocationIds [b] ON [a].[LocationId] = [b].[Id]
WHERE [a].[StatusType] = @statusType
OPTION (RECOMPILE);
(lưu ý: tôi đã thêm OPTION (RECOMPILE)
gợi ý gần đây sau một số lời khuyên, nhưng nó không giúp được gì.
Đây là chỉ mục bao phủ (lưu ý: chế độ xem cũng có một chỉ mục được nhóm ListingId
, là duy nhất)
CREATE NONCLUSTERED INDEX [IX_ListingSearchView_ForAPI] ON [dbo].[ListingSearchView]
(
[LocationId] ASC,
[StatusType] ASC
)
INCLUDE ( -- all the fields in the query) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Tôi đặt một dấu vết hồ sơ, với số liệu thống kê XML về kế hoạch.
Đây là một tốc độ chậm (6 giây) và kế hoạch có liên quan:
Trông giống hệt như tôi mong đợi và là cùng một kế hoạch khi truy vấn nhanh.
Đây là phần phóng to của phần tốn kém của kế hoạch, nếu điều đó giúp:
Dưới đây là lược đồ đầy đủ của các bảng xem / sao lưu, nếu điều đó giúp: https://pastebin.com/wh1sRcbQ
Ghi chú:
- Các chỉ mục đã được phân mảnh, thống kê cập nhật.
- Ban đầu truy vấn là nội tuyến chống lại chế độ xem, nhưng tôi đã chuyển sang XUÂN để thử và giúp ổn định. Không giúp được gì.
- Thêm
WITH OPTION (RECOMPILE);
gợi ý (không hoạt động, vì vậy không thể đánh hơi thông số?) - Các truy vấn khác trong hệ thống đôi khi cũng chạy chậm và chúng cũng không có vấn đề rõ ràng trong kế hoạch của chúng.
- Có thể bị khóa? Không chắc chắn làm thế nào để xác nhận.
Bất kỳ ý tưởng về những gì tôi có thể thử tiếp theo?
Cảm ơn