gpt4 book ai didi

mysql - 任何人都可以告诉我为什么我的查询需要永远运行吗?

转载 作者:行者123 更新时间:2023-11-29 15:50:02 24 4
gpt4 key购买 nike

有人可以告诉我为什么我的查询需要永远运行吗?我想确保我的查询没有任何问题导致进程变慢。

 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'

知道如何改进它或使其更快吗?

非常感谢

最佳答案

  • OR 通常会阻止使用任何索引。
  • 不要将日期转换为 DATE - 我假设 DateCreated 已经是 DATEDATETIME,没有 CONVERT() 也能正常工作。
  • 摆脱 CONVERT 后,PD 上的 INDEX(InvoiceIDByStore, DateCreated) 可能会有很大帮助。
  • 请提供SHOW CREATE TABLE,以便我们查看您是否有合适的索引。
  • 请限定所有列名称(使用 JOIN 时),以便我们知道它们位于哪个表中(例如:DefaultVendorName)
  • 请提供说明
  • 我认为没有必要使用WITH;看起来WITH 中的大SELECT 可以变成“派生表”。看看 EXPLAIN 是否保持不变会很有趣。

关于mysql - 任何人都可以告诉我为什么我的查询需要永远运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com