Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kinerja kueri SQL yang buruk karena klausa ORDER BY

ORDER BY perlu mengurutkan hasil yang mungkin memakan waktu lama jika besar.

Untuk mengoptimalkannya, Anda mungkin perlu mengindeks tabel dengan benar.

Namun, jalur akses indeks memiliki kekurangan sehingga bisa memakan waktu lebih lama.

Jika Anda memiliki sesuatu selain equijoin dalam kueri Anda, atau predikat rentang (seperti < , > atau BETWEEN , atau GROUP BY klausa), maka indeks yang digunakan untuk ORDER BY dapat mencegah indeks lain digunakan.

Jika Anda memposting kueri, saya mungkin dapat memberi tahu Anda cara mengoptimalkannya.

Pembaruan:

Tulis ulang kueri:

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

Relasi View_Product_Joined , seperti namanya, mungkin adalah pemandangan.

Bisakah Anda memposting definisinya?

Jika dapat diindeks, Anda dapat memanfaatkan pembuatan indeks di 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. Pilih n baris acak dari tabel SQL Server

  2. Terkadang Mendapatkan SqlException:Timeout kedaluwarsa

  3. ROUND() Contoh di SQL Server

  4. Kunci utama komposit JPA

  5. SQL:HAPUS data dari tabel referensi diri dalam urutan tertentu