我在查詢一個包含所有有效日期時間的varchar列。在查詢中,我將該列轉換爲datetime。有什麼辦法將varchar列索引爲日期時間?
請記住,將列的數據類型定義更改爲datetime不是一個選項。相信我,這不是一個選擇。
通過查詢分析,我發現查詢會更快,如果我可以在此列上添加索引。但它是varchar。如果我添加了一個索引,它會根據它的varchar值進行索引,對嗎?但是我想讓它在日期時間值上索引,是的?
有什麼我可以在這裏做索引?
我在查詢一個包含所有有效日期時間的varchar列。在查詢中,我將該列轉換爲datetime。有什麼辦法將varchar列索引爲日期時間?
請記住,將列的數據類型定義更改爲datetime不是一個選項。相信我,這不是一個選擇。
通過查詢分析,我發現查詢會更快,如果我可以在此列上添加索引。但它是varchar。如果我添加了一個索引,它會根據它的varchar值進行索引,對嗎?但是我想讓它在日期時間值上索引,是的?
有什麼我可以在這裏做索引?
有效數據是第一優先級,因爲任何將數據轉換爲DATETIME的方法將在午夜時間返回1900年1月1日的值,此時值與接受的格式不匹配。
SQL Server沒有基於函數的索引,那麼你的選擇是:
您是否考慮在這些生成的表之上構建索引視圖?您可以在視圖中定義您的varchar-to-datetime轉換,然後爲結果列編制索引。
查看Improving Performance with SQL Server 2005 Indexed Views瞭解更多信息。我不是使用索引視圖的專家,我只讀過他們。所以我會留給你看看你的情況是否會是正確的解決方案。