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)