INFORMIX-SE:
我的用户定期运行一个 SQL 脚本 [REORG.SQL],它按排序顺序将表中的所有行卸载到两个单独的文件(活动和非活动),删除表,重新创建表,将排序的加载文件加载回其中,在我对卸载文件进行排序的同一列上创建一个集群索引,创建其他支持索引并更新其统计信息。
(参见 REORG.SQL 脚本: SE: 'bcheck -y' anomaly)
(另请参阅:customer.pk_name 加入 transactions.fk_name 与 customer.pk_id [serial] 加入 transactions.fk_id [integer] ,因为集群索引是按名称而不是 pk_id[serial]=fk_id[int])
使用我的 REORG.SQL 脚本时,我一直遇到索引文件一致性问题,所以我怀疑 CLUSTER INDEX 与它有关,并在没有集群的情况下创建了索引,问题就消失了!
现在我的问题是:如果我设法将按客户全名排序的所有交易数据加载到新创建的表中,我真的有必要创建一个 CLUSTER INDEX,而实际上这些行已经按相同的顺序排序集群会完成吗?..我知道随着新行的添加,集群索引开始失去集群,那么创建集群索引有什么优势?..查询优化器是否利用集群与非集群当行基本上以相同的聚集顺序排列时索引?.. 有没有人在聚集表时遇到 IDX/DAT 文件问题?.. 也许我的 SQL 脚本有问题?(请查看我的 SQL 脚本代码,看看我是否做错了什么?)