簡體   English   中英

向具有十億條記錄的表中添加新的列和索引

[英]Adding new column and index to a table with a billion records

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

  1. 在十億條記錄表中添加新索引需要多長時間?
  2. 以新列為例,[Field]的值為0、1、2、9。 大部分記錄將為9。在選擇條件下,將使用Field = 0或Field = 1或Field = 2,但不會使用Field = 9。

    例如在十億條記錄表中,

    • 值為0的字段記錄:100,000;
    • 值為1的字段記錄:100,000;
    • 值2記錄的字段:100,000;
    • 具有9條記錄的字段:十億至30萬
  3. 我應該在列上創建索引嗎? 如果不是,則包含條件Field = 0的select sql將太慢而無法返回結果?

如果大多數值是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條記錄進行排序所需的時間。 當然,使用並行索引構建更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM