我有兩個查詢可以背對背並填充兩個單獨的網格。它們不會在sql查詢的同一個實例中運行,但是不會少於。簡單查詢性能問題
我已經在SSMS中運行了這兩個查詢,每個查詢約5秒。 BO_HRO具有約600,000行,BO_HParts具有約1,200,000行,分別具有一對多關係。我也有一個SSIS建議的索引,這些索引是BO_HRO的deleted_by,RO_NO和BName以及一個關於deleted_by,RO_NO,Quanity,PartNo和PartDesc的BO_HParts的索引。
SELECT TOP 10000 bo_hparts.partno,
bo_hparts.partdesc,
SUM(bo_hparts.quanity) AS qtysum
FROM bo_hparts INNER JOIN bo_hro ON bo_hparts.ro_no = bo_hro.ro_no
WHERE bo_hparts.deleted_by < 0 AND bo_hro.deleted_by < 0
GROUP BY bo_hparts.partno, bo_hparts.partdesc
ORDER BY SUM(bo_hparts.quanity) DESC, bo_hparts.partno;
SELECT TOP 10000 bo_hro.bname,
bo_hparts.partno,
bo_hparts.partdesc,
SUM(bo_hparts.quanity) AS qtysum
FROM bo_hparts INNER JOIN bo_hro ON bo_hparts.ro_no = bo_hro.ro_no
WHERE bo_hparts.deleted_by < 0 AND bo_hro.deleted_by < 0
GROUP BY bo_hro.bname, bo_hparts.partno, bo_hparts.partdesc
ORDER BY SUM(bo_hparts.quanity) DESC, bo_hro.bname, bo_hparts.partno
我的老闆仍然要以提高性能,我不知道自己還能做些什麼實現自己的目標。有沒有其他的方法來提高速度?
我這裏有一個執行計劃https://dl.dropboxusercontent.com/u/99733863/BO_HParts%20Join%20BO_HRO.sqlplan
請更新帶有表別名的查詢,以便我們可以確定列來自哪些表。此外,你可以刪除'distinct' - 看看是否有助於性能。而且,'deleted_by'是否具有單個值(例如'-1'),還是您真的在檢查多個值? –
@GordonLinoff添加別名和'distinct'並沒有什麼區別。您的deleted_by假設是正確的,它只是-1或1的單個值(-1未刪除,1被刪除) – shadowjfaith
在這種情況下,對於初學者,您可以簡單地使用'= -1'代替'<0' 。我不知道這會有多大的影響,但是在任何情況下都值得這樣做...... – PinnyM