我有這個查詢,我必須使用 AWS Lambda 自動化,但首先我想優化它。
這對我來說似乎是合法的,但我有這種感覺,我可以做一些事情來改進它。
SELECT q_name, count(*)
FROM myTable
WHERE status = 2
AND DATEDIFF(mi, create_stamp, getdate()) > 1
GROUP BY q_name
uj5u.com熱心網友回復:
我能看到的唯一改進是不要將函式應用于您的列,因為這會使查詢無法決議(無法使用索引)。而是將列保持原樣并計算正確的截止值。
SELECT q_name, count(*)
FROM myTable
WHERE [status] = 2
--AND DATEDIFF(mi, create_stamp, getdate()) > 1
-- Adjust the logic to meet your requirements, because this is slightly different to what you had
AND create_stamp < DATEADD(minute, -1, getdate())
GROUP BY q_name;
請注意,雖然dateadd確實接受要添加的單位的縮寫,但完整輸入它會更清晰。
uj5u.com熱心網友回復:
如果可能,我建議您使用存盤程序。使用存盤程序的性能更高,因為存盤程序作為機器代碼存盤在服務器的快取中,除非代碼被修改,否則不會重新編譯。
這是檔案
CREATE PROCEDURE ABC
AS
SELECT q_name, COUNT(*)
FROM myTable
WHERE [status] = 2
AND create_stamp < DATEDIFF(mi, create_stamp, getdate()) > 1
GROUP BY q_name
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/414982.html
標籤:
