[英]Creating a new calculated column in a oracle exadata table with 3 billion rows
[英]Adding new column and index to a table with a billion records
我想向具有十億條記錄的表中添加新列。 為了加快select語句的速度,我需要添加一個新索引,該索引將包含此列和PK列。
以新列為例,[Field]的值為0、1、2、9。 大部分記錄將為9。在選擇條件下,將使用Field = 0或Field = 1或Field = 2,但不會使用Field = 9。
例如在十億條記錄表中,
我應該在列上創建索引嗎? 如果不是,則包含條件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.