首页/数据/数据库速查/索引基数(cardinality)与统计信息
性能与调优57 条

索引基数(cardinality)与统计信息

cardinality 是索引列唯一值数量估算:越大选择性越好;SHOW INDEX 的 Card 值严重失实会导致优化器选错索引,用 ANALYZE TABLE 刷新。

数据库速查数据更新于 2026-10-12

查看与刷新

查看与刷新
SHOW INDEX FROM appdb.orders\G
-- 关注 Card 列与列顺序(联合索引的累计去重数)
ANALYZE TABLE appdb.orders;
-- 8.0 可用采样与直方图增强:
ANALYZE TABLE appdb.orders UPDATE HISTOGRAM ON status WITH 64 BUCKETS;
估算来源随机采样(innodb_stats_persistent 持久化统计)
失准诱因大比例变更后未 analyze;分布倾斜
手段ANALYZE TABLE / 直方图 / 持久化统计参数
统计信息是估算,不追求精确:目标是让优化器做出「不比最优差太多」的选择。

易错点

  • Card 与真实值差 100 倍也无人复核:选错索引的根因常在这里
  • 每次微调数据都 ANALYZE 全库:代价高且无必要,针对热点表按需执行

数据来源与参考

  • MySQL 8.0 Reference Manual: InnoDB Persistent Statistics
  • MySQL 8.0 Reference Manual: ANALYZE TABLE

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌