我一直在思考两个问题。在互联网上找不到任何关于此的资源。dbms 如何处理它?还是他们?尤其是甲骨文。
在问题之前,这里是一个例子:假设我有一个主表“MASTER”和从表“SLAVE”。主表有一个“ID”列,它是主键,索引是由Oracle创建的。从表有外键“MASTER_ID”,它指的是主表和“SLAVE_NO”。这两个加起来就是从表的主键,又被索引了。
**MASTER** | **SLAVE**
(P) ID <------> (P)(F) MASTER_ID
(P) SLAVE_NO
现在是问题;
1-如果 MASTER_ID 是一个自动递增的列,并且没有删除任何记录,这不会使表的索引不平衡吗?Oracle 是否定期重建索引?据我所知,Oracle 仅在构建时平衡索引分支。Oracle 是否会自动重新构建索引?说如果水平上升到一些高水平?
2-假设 Oracle 不会自动重建,除了安排定期重建索引的作业之外,将 SLAVE 表的主键列反向排序是否更明智?我的意思不是“MASTER_ID”、“SLAVE_NO”将其排序为“SLAVE_NO”、“MASTER_ID”i,它会帮助从表的 b-tree 索引更加平衡吗?(好吧,每个主表可能没有确切数量的从属记录,但仍然似乎比倒序好)
有人知道吗?还是意见?