有人可以告诉我为什么我的查询永远需要运行吗?我想确保我的查询没有问题,从而减慢了该过程。
WITH TradeIn AS
(
SELECT CONVERT(ID.DateCreated, DATE) 'Invoice Date' , ID.InvoiceIDByStore ,
ID.InvoicedAt , ID.EmployeeName , ID.TenderedBy , ID.CustomerName ,
ID.ProductIdentifier , ID.ProductName , ID.SerialNumber ,
ID.Quantity , ID.TotalPrice
FROM simplymacstaging.productdetail ID
LEFT JOIN simplymacstaging.productmasterlist PM
ON PM.ProductSKU = ID.ProductIdentifier
WHERE CONVERT(ID.DateCreated, DATE) >= '2014-01-01'
AND CONVERT(ID.DateCreated, DATE) <= '2014-12-31'
AND ID.InvoicedAt IN ('100 Park City', '101 Orem', '102 Fort Union',
'105 St. George', '106 Foothill'
)
AND DefaultVendorName IN ('Simply Mac Trade In', 'Phobio')
OR ProductIdentifier IN ('ISATNS000001','ISATRB000003',
'ISPHNR000007','COMINS001595','COMIRB001597','ISPHNS000003',
'COMINS001415','ISPHRB000004','COMIRB001416','ISPHTL000006',
'IABUAP000004','IABUAP000003','MIMICE000035','MIMICE000426',
'MIMICE000427','IABUAP000006','COMIAP000007','COMICE000011')
)
SELECT *
FROM simplymacstaging.productdetail PD
INNER JOIN TradeIn TD ON TD.InvoiceIDByStore = PD.InvoiceIDByStore
WHERE CONVERT(PD.DateCreated, DATE) >= '2014-01-01'
AND CONVERT(PD.DateCreated, DATE) <= '2014-12-31'
有什么想法可以改善或使其更快吗?
非常感谢您
答案 0 :(得分:0)
OR
通常会阻止使用任何索引。DATE
-我假设DateCreated
已经是DATE
或DATETIME
,如果没有CONVERT()
,它就可以正常工作。 CONVERT
之后,INDEX(InvoiceIDByStore, DateCreated)
上的PD
可能会大有帮助。SHOW CREATE TABLE
,以便我们查看您是否有合适的索引。JOIN
时),以便我们知道它们位于哪个表中(例如:DefaultVendorName
)EXPLAIN
。WITH
; SELECT
中的大WITH
似乎可以变成“派生表”。看看EXPLAIN
是否保持不变会很有趣。