跳到主要内容

4. 索引

索引中不应该有重复列

英文名: DuplicateColumnsInIndex

规则描述: 索引中包含重复的列是不必要的,它不会提高查询性能,反而可能导致索引效率降低。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 索引中包含重复的列。

可配置:

支持的数据库类型: 所有 (ALL)

索引中的字段数目超过阈值

英文名: NumberOfColumnsInIndexExceedThreshold

规则描述: 限制索引中字段的数量,以避免索引过大和性能问题。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 索引中的字段数目超过了预设的阈值(如5)。

可配置:

案例: 表达式可以配置为 5,表示索引中的字段数目不应超过5个。

支持的数据库类型: 所有 (ALL)

索引中的字段不可以为TEXT和LOB类型

英文名: Text&LobColumnsInIndexDisallowed

规则描述: 索引中不应包含TEXT和LOB类型的字段,因为这些类型的字段通常很大,会导致索引效率低下。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 索引中包含了TEXT或LOB类型的字段。

可配置:

支持的数据库类型: 所有 (ALL)

索引中避免使用可空列

英文名: AvoidUsingNullableColumnsInIndex

规则描述: 建议在索引中避免使用可空列,因为可空列可能会导致索引不完整,影响查询性能。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 索引中包含了可空列。

可配置:

支持的数据库类型: 所有 (ALL)

建议索引字段对区分度大于阈值

英文名: IndexFilterFactorShouldLowerThanThreshold

规则描述: 建议索引字段的选择应基于字段的区分度,即字段值的分布唯一性,以确保索引的有效性。

预警级别: 通知 (Notice)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 索引字段的区分度低于预设的阈值(如0.1)。

可配置:

案例: 表达式可以配置为 0.1,表示索引字段的区分度应高于10%。

支持的数据库类型: 所有 (ALL)

禁止在分区表上创建全局索引

英文名: GlobalIndexOnPartitionedTableDisallowed

规则描述: 禁止在分区表上创建全局索引,因为这可能会导致性能问题和管理复杂性。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 在分区表上创建了全局索引。

可配置:

支持的数据库类型: opengauss

禁止创建重复索引/冗余索引

英文名: RedundantIndexDisallowed

规则描述: 禁止创建重复或冗余的索引,这会浪费存储空间并降低写入性能。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 创建了与现有索引重复或冗余的索引。

可配置:

支持的数据库类型: 所有 (ALL)

创建索引的字段长度不超过阈值

英文名: LongLengthColumns4IndexDisallowed

规则描述: 限制索引中字段的长度,以避免索引过大和性能问题。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 创建索引的字段长度超过了预设的阈值(如32)。

可配置:

案例: 表达式可以配置为 32,表示创建索引的字段长度不应超过32个字符。

支持的数据库类型: 所有 (ALL)