Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hiệu suất kém của truy vấn SQL do mệnh đề ORDER BY

ORDER BY cần sắp xếp tập kết quả có thể mất nhiều thời gian nếu nó lớn.

Để tối ưu hóa nó, bạn có thể cần lập chỉ mục các bảng đúng cách.

Tuy nhiên, đường dẫn truy cập chỉ mục có nhược điểm của nó nên thậm chí có thể mất nhiều thời gian hơn.

Nếu bạn có một cái gì đó không phải là tương đương trong truy vấn của bạn hoặc các vị từ khác nhau (như < , > hoặc BETWEEN hoặc GROUP BY mệnh đề), sau đó là chỉ mục được sử dụng cho ORDER BY có thể ngăn không cho các chỉ mục khác được sử dụng.

Nếu bạn đăng truy vấn, tôi có thể cho bạn biết cách tối ưu hóa nó.

Cập nhật:

Viết lại truy vấn:

SELECT  *
FROM    View_Product_Joined j 
LEFT JOIN
        [dbo].[OPR_InventoryRules] irp
ON      irp.ID = j.skuid
        AND irp.InventoryRulesType = 'Product'
LEFT JOIN
        [dbo].[OPR_InventoryRules] irs
ON      irs.ID = j.NodeSiteID
        AND irs.InventoryRulesType = 'Store'
CROSS APPLY
        (
        SELECT  TOP 1 *
        FROM    OPR_PriceLookup pl
        WHERE   pl.siteID = j.NodeSiteID
                AND pl.skuid = j.skuid
                AND pl.RoleID IN (-1, 13)
        ORDER BY
                pl.RoleID desc
        ) pl
WHERE   SiteName = N'EcommerceSite'
        AND Published = 1
        AND DocumentCulture = N'en-GB'
        AND NodeAliasPath LIKE N'/Products/Cats/Computers/Computer-servers/%'
        AND NodeSKUID IS NOT NULL
        AND SKUEnabled = 1
ORDER BY
        NodeOrder ASC

Mối quan hệ View_Product_Joined , như tên cho thấy, có thể là một chế độ xem.

Bạn có thể vui lòng đăng định nghĩa của nó được không?

Nếu nó có thể lập chỉ mục, bạn có thể được lợi khi tạo chỉ mục trên View_Product_Joined (SiteName, Published, DocumentCulture, SKUEnabled, NodeOrder) .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008- Nhận các ràng buộc bảng

  2. Nâng cấp nền tảng dữ liệu SQL Server vào năm 2015

  3. Entity Framework - giá trị mặc định không được đặt trong bảng máy chủ sql

  4. Chỉnh sửa các hàng đã chọn theo cách thủ công trong SQL Server

  5. Sử dụng biểu thức chính quy trong một thủ tục được lưu trữ