mysql分区表 查询分区的数据行数与实际不符

xiaoyan 2017-03-30 11:09:28
mysql按月分区:
PARTITION s201612 VALUES LESS THAN (TO_DAYS('2017-01-01 ')),
PARTITION s201701 VALUES LESS THAN (TO_DAYS('2017-02-01')),
PARTITION s201702 VALUES LESS THAN (TO_DAYS('2017-03-01 ')),
PARTITION s201703 VALUES LESS THAN (TO_DAYS('2017-04-01 ')),
PARTITION s201704 VALUES LESS THAN (TO_DAYS('2017-05-01 ')),
PARTITION s201705 VALUES LESS THAN (TO_DAYS('2017-06-01 ')),
PARTITION s201706 VALUES LESS THAN (TO_DAYS('2017-07-01')),
PARTITION s201707 VALUES LESS THAN (TO_DAYS('2017-08-01')),
PARTITION s201708 VALUES LESS THAN (TO_DAYS('2017-09-01')),
PARTITION s201709 VALUES LESS THAN (TO_DAYS('2017-10-01')),
PARTITION s201710 VALUES LESS THAN (TO_DAYS('2017-11-01')),
PARTITION s201711 VALUES LESS THAN (TO_DAYS('2017-12-01')),
PARTITION s201712 VALUES LESS THAN (TO_DAYS('2018-01-01')),
PARTITION p2 VALUES LESS THAN MAXVALUE

通过 INFORMATION_SCHEMA.partitions 表查询分区的数据行数,查到s201701行数65条,
SELECT
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
FROM
INFORMATION_SCHEMA.partitions
WHERE
TABLE_SCHEMA = schema()
AND TABLE_NAME='table_ym';

实际上一月份的数据有77条,删除s2017这个分区,发现一月份的数据已经全部删除。如何让查询表分区的数据条数和实际的数据条数一致?ps:发现12条差距刚好是2017年1月1日这天的数据。
...全文
1026 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyan 2017-03-30
  • 打赏
  • 举报
回复 3
查看mysql官方文档,发现 INFORMATION_SCHEMA.partitions的TABLE_ROWS字段其实提供的就是一个大概数值。附上官方文档说明 TABLE_ROWS: The number of table rows in the partition. For partitioned InnoDB tables, the row count given in the TABLE_ROWS column is only an estimated value used in SQL optimization, and may not always be exact.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧