2013-05-09 51 views
0

我想將一個新列添加到一個包含十億條記錄的表中。爲了加速select語句,我需要添加一個新的索引,它將包含此列和PK列。將新列和索引添加到具有十億條記錄的表中

  1. 需要多長時間才能在億記錄表中添加新索引?
  2. 例如[Field]的新列,值將是0,1,2,9。 大部分記錄將爲9.在選擇條件 中將使用字段= 0或字段= 1或字段= 2,但不使用字段= 9。

    例如在一個十億記錄表,

    • 字段具有0值的記錄:100000;
    • 值爲1的字段記錄:100,000;
    • 值2記錄的字段:100,000;
    • 場與價值9條:一十億300000
  3. 我應該列上建立索引? 如果不是,那麼包含條件 Field = 0的select sql將太慢而無法返回結果?

回答

1

如果大部分值是9的則可以避開它們包括在索引中:

create index my_index on my_table (case column_name when 9 then null else column_name end); 

然後查詢上...

select ... 
from ... 
where case column_name when 9 then null else column_name end = 2 

...例如。

所花費的時間將是掃描整個表格所需的時間,然後對索引中將出現的300,000條記錄進行排序。當然,使用並行索引構建更快。

相關問題