2017-01-12 15 views
0

我有一個包含571684記錄的表的SQL數據庫, 在這些記錄的每一箇中都有一個名爲「Date」的DateTime, ,比這個名字更糟糕的是日期時間的時間方面根本沒有被使用。使用DATE而不是DATETIME的性能優點/代價使用實體框架的數據庫優先LINQ 6

我調查了DATE和DATETIME的SQL DB大小,發現日期要比DATETIME小得多。 (3字節對8字節)

我會繼續並做出明顯的優化,但我關心的是LINQ to Entities如何處理SQL DATE類型,因爲實體只有DateTime。

LINQ生成的內部SQL是否必須將DATE轉換爲實體的DATETIME?將字段更新爲DATE會有好處,還是會因爲Entity Framework而影響我的查詢執行時間?

謝謝。

+0

保存每個記錄5個字節不是我所做的優化 - 在大圖中完全沒有關係。 –

+0

我以前讀過DATETIME2(3)與DATETIME相同的準確度,但是在7Bs而不是8Bs,但是,我知道這種情況下的時間分量永遠不會相關,所以它們都不是儘管對於存儲來說同樣有用,但仍然小到了DATE。 你有關於查詢執行時間的信息嗎? 我將編輯我的第一個問題是特定的,我指的是LINQ生成的內部SQL; SQL是否包含從DATE到DATETIME的任何轉換,這可能會降低查詢執行速度? 任何引用或規格讚賞。 – MerlynCooper

回答

2

正如您在Entity Framework的SQL Server Data Type Mappings,Date(Sql Server)中看到的,映射到DateTime(.Net)。

這是一個直接轉換。 EF不會生成首先轉換爲DateTime的SQL。爲什麼要這樣? .Net數據類型對於Sql Server數據類型而言過大。

我不會擔心性能或存儲太多。在我看來,唯一能證明轉換是合理的是語義。 A Date數據類型傳達時間組件並不重要,它有助於使列不言自明。

+0

非常感謝。 – MerlynCooper

相關問題