我需要在一個月內從 Sql Azure 獲取資料。有 2 個相等(用于結果)選項:
Where按月和年過濾:
query = query.Where(a => a.Date.Year == dayOfMonth.Year && a.Date.Month == dayOfMonth.Month)
Where從/到過濾:
DateTime firstDayOfMonth = dayOfMonth.GetFirstDayOfMonth().Date; // returns 09/01/2022 00:00:00 for Sept 2022
DateTime lastDayOfMonth = dayOfMonth.GetLastDayOfMonth().ToEndOfTheDay(); // returns 09/30/2022 23:59:59 for Sept 2022
query = query.Where(a => a.Date >= firstDayOfMonth && a.Date <= lastDayOfMonth);
哪個選項更好(由于性能或其他原因),為什么?
謝謝
uj5u.com熱心網友回復:
性能明智
第一個更快。假設您有 100 條記錄
高層次的時間復雜度將是
First Query
時間復雜度 = 遍歷 100 條記錄并比較日、月和年的時間。
TC 約 = O(100);
'第二個查詢'
時間復雜度 = 獲取第一天的操作 獲取最后一天的操作 遍歷 100 條記錄并比較大于或等于第一天和小于或等于最后一天的日期雖然在這種情況下它也比較日、月和年,因為在內部它是做同樣的事情(比較日、月和年)。
TC 大約= O(1) O(1) O(100)
TC 約 = O(102)
盡管執行上的差異很小。
可讀性
從這個角度來看,第二個更具可讀性和可理解性。
根據我的觀點,在編碼中,性能比可讀性更重要。為了可理解性或可讀性,可以在代碼中撰寫注釋。所以我會選擇第一個
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521387.html
