我想将一个新列添加到包含十亿条记录的表中。为了加速select语句,我需要添加一个包含该列和PK列的新索引。
新列例如[Field],该值为0,1,2,9。 大多数记录都是9.在选择条件下 将使用Field = 0或Field = 1或Field = 2,但不使用Field = 9。
例如在十亿记录表中,
我应该在列上创建索引吗? 如果没有,则选择包含条件的sql Field = 0将太慢而无法返回结果?
答案 0 :(得分: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条记录进行排序。当然,使用并行索引构建更快。