2011-12-19 45 views
2

我有一個項目,我正在處理這個項目,需要我從數據庫中刪除記錄,如果他們至少3歲。哪個更快:來自VB.NET或DB2的當前日期SQL

我在DB2 SQL這樣的事情來獲得日期:

SELECT * FROM tableA 
WHERE ADD_DATE < CHAR(CURRENT DATE-3 YEARS) 

ADD_DATE被存儲在我的系統特性,這就是爲什麼我轉換

我知道它也有可能獲取日期並在VB.net中設置它的格式,這是我用來調用SQL語句的語言。

我的問題是,在SQL中選擇日期並在SELECT中執行轉換會更快/更好還是更好地獲取當前日期並在VB.net中將其轉換,然後將該日期用於SQL語句。我認爲VB.net會更好,因爲有成千上萬的記錄必須進行比較。我應該可以在VB中設置它,以便它只檢索日期並將其轉換一次,但我不確定每次從這些語句中獲得哪種性能。

在此先感謝。

回答

2

如果你所做的只是通過調用數據庫來獲取日期,那麼獲取它的客戶端會更快,並避免往返數據庫。

如果你這樣做了服務器端,並且你正在一個基於集合的操作中比較你的日期,那麼時間差就可以忽略不計。如果你做了基於循環(光標或某物)的檢查,那麼你會浪費時間。

聽起來這不適用於您,但爲了將來的參考,請務必考慮客戶端和數據庫服務器位於不同時區的可能性。根據數據生成的時區,以單向或雙向的方式進行安全性更高。

+0

要添加到您的答案:如果客戶端時間錯誤會發生什麼?如果這將是一個問題(我不知道什麼時候不會),那麼我會使用服務器時間。 – UnhandledExcepSean 2011-12-20 12:54:16

0

在VB.Net中做「現在」肯定會比打到數據庫更快。