我有一個很大的表,有400列和100,000行。 當我選擇所有列時,查詢非常慢(〜7500ms)。 在3列上只有一個主鍵。 我不在乎插入/更新的速度,這張表大部分是用於讀取的。 我在閱讀關於如何Clustered Columnstore Index與我的要求非常匹配,以提高閱讀性能。聚集列存儲索引很慢
所以我嘗試使用聚集列存儲索引和速度幾乎相同(約7000毫秒)。我真的期望有更高的改進。我錯過了什麼嗎?
我有一個很大的表,有400列和100,000行。 當我選擇所有列時,查詢非常慢(〜7500ms)。 在3列上只有一個主鍵。 我不在乎插入/更新的速度,這張表大部分是用於讀取的。 我在閱讀關於如何Clustered Columnstore Index與我的要求非常匹配,以提高閱讀性能。聚集列存儲索引很慢
所以我嘗試使用聚集列存儲索引和速度幾乎相同(約7000毫秒)。我真的期望有更高的改進。我錯過了什麼嗎?
要回答這個問題,我需要知道你的查詢和字段的where子句中的列定義。
這些是相同的數據類型以確保使用索引是非常重要的。有時需要完成轉換(時間戳記日期或字符到日期等),這使得不可能使用索引。
與不含'WHERE'子句的'SELECT * FROM TableName'查詢無關。 –
問這個問題的人沒有說他/她沒有where子句。他只說他正在選擇所有欄目。並不是他正在選擇所有行。 –
這在屏幕截圖中可見。 –
當您只選擇400列中的一部分時,您將看到真正的性能提升。在傳統的行存儲中,當您選擇該行時,即使只選擇了幾列,也必須始終訪問所有列。使用列存儲時,如果您只選擇了400列中的100列,則查詢速度應大致快四倍,並且有25%的邏輯讀數。選擇*你不會看到太多改進。
7.5秒選擇40,000,000項數據實際上並不那麼慢。大部分時間可能正在處理大型數據集。 –