Tôi đã truy vấn sau đó mất < 1s khi ORDER BY b.Price
được sử dụng, và hơn 10s khi ORDER BY b.Price DESC
được sử dụngORDER BY cột được lập chỉ mục vẫn còn chậm
select * from
(
select
/* When changed to ORDER BY b.Price DESC it's 10x slower! */
(row_number() over (ORDER BY b.Price)) as RowNumber,
b.*
from
Books b (nolock)
inner join BookPublishRegions p (nolock)
on b.BookKey = bp.BookKey
where
contains(p.PublishRegionName, 'France')
) as t1
where t1.RowNumber between 100 and 110
Bất kỳ suy nghĩ về lý do tại sao?
Tôi có cả chỉ số tăng dần và giảm dần trên b.Price
. Tôi không thực sự chắc chắn những gì khác tôi có thể làm ở đây ...
Để tham khảo, tôi bao gồm CREATE kịch bản cho cả hai chỉ số dưới đây:
CREATE NONCLUSTERED INDEX [IX_Books_PriceDesc] ON [dbo].[Books]
(
[Price] DESC
)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) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IX_Books_Price] ON [dbo].[Books]
(
[Price] 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) ON [PRIMARY]
Hiển thị cho chúng tôi các chỉ mục –
Bạn có thể có chỉ mục trên Price asc thay đổi nó thành DESC https://technet.microsoft.com/en-us/library/ms181154%28v=sql.105%29.aspx – Mihai
Có lẽ bạn có thể cho chúng ta thấy một GIẢI THÍCH? –