暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 金融交易表上的BTree索引或位图索引

askTom 2017-08-21
259

问题描述

嗨,汤姆,

我需要一些关于正确位图选择的建议。

我们有一张表格,其中包含一些支付卡交易的200,000,000记录。每个交易都有一个唯一的CardSerialNumber和一个由卡本身生成的交易计数器,因此我们希望表中没有重复的CardSN交易计数器。
我们有2,000,000卡,所以Count(distinct CardSN) <= 2,000,000
计数器是1,2,3,...

所以我的问题是:
1-哪个更好: 两个字段上的唯一BTree索引或它们上的唯一位图索引?
2-表上的位图索引和唯一约束是否一起工作?
3-这种方法是否更合适: 允许插入重复的行,并在一天结束时删除它们?

谢谢

专家解答

1.你不能有唯一的位图索引因此,唯一的B树索引无限好。

2.不确定你的意思是什么?您可以在表中的不同列上具有位图索引和唯一约束:

create table t (
  c1 int unique, 
  c2 int
);

create bitmap index i2 on t(c2);


但是你不能使用位图索引来支持唯一约束:

alter table t add constraint u unique (c2) using index i2;

ORA-14196: Specified index cannot be used to enforce the constraint.


3.不!你在为自己创造额外的工作。你有一段时间有糟糕的数据。您首先要阻止不良数据到达。

如果您想进一步了解位图和B树之间的差异,请查看我关于索引的最新文章:

https://blogs.oracle.com/sql/how-to-create-and-use-indexes-in-oracle-database
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论