2013-05-09 52 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条记录进行排序。当然,使用并行索引构建更快。

相关问题