达梦数据库默认创建的表都是索引组织表,所以如果显示的创建聚集索引,系统会自动以ROWID排序,创建聚集索引。因为聚集索引叶子节点包含所有表记录,因此堆表+聚集索引 在达梦数据库中创建一个表的空间代价是双倍的。正因为有了聚集索引,所以达梦的执行计划中没有全表扫描,而是聚集索引的全索引扫描。
新建聚集索引会重建这个表以及其所有索引,包括二级索引、函数索引,是一个代价非常大的操作。因此,最好在建表时就确定聚集索引键,或在表中数据比较少时新建聚集索引,而尽量不要对数据量非常大的表建立聚集索引。
创建聚集索引的约束条件:
- 每张表中只允许有一个聚集索引,如果之前已经指定过CLUSTER INDEX或者指定了CLUSTER PK,则用户新建立CLUSTER INDEX时系统会自动删除原先的聚集索引。但如果新建聚集索引时指定的创建方式(列,顺序)和之前的聚集索引一样,则会报错;
- 指定CLUSTER INDEX 操作需要重建表上的所有索引,包括PK索引;
- 删除聚集索引时,缺省以ROWID排序,自动重建所有索引;
- 若聚集索引是默认的ROWID索引,不允许删除;
- 聚集索引不能应用到函数索引中;
- 不能在列存储表上新建/删除聚集索引;
- 建聚集索引语句不能含有partition_clause子句;
更多资讯请上达梦技术社区了解: https://eco.dameng.com