MySQL中使用count和information_schema.tables计算行数的区别

在 MySQL 数据库中,了解如何计算表中的行数对于DBA和开发人员来说至关重要。本文将探讨使用两种不同方法来获取表行数的方法:一种是使用 COUNT 函数,另一种是通过查询 information_schem)a.tables 视图。

本文将比较这两种方法的优缺点,以及何时使用哪种方法更为合适。

作者:霸王龙的日常,欢迎关注

数据库:MySQL 8.0.33

1 案例演示

1.1 查询表结构

mysql> SHOW CREATE TABLE trexinfo; +----------+-----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+-----------------------------------------------------------------------------------------------------------------------------+ | trexinfo | CREATE TABLE `trexinfo` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `name` varchar(100) DEFAULT NULL COMMENT '姓名', `date_of_birth` date DEFAULT NULL COMMENT '出生日期', `gender` enum('Male','Female','Other') DEFAULT NULL COMMENT '性别', `email` varchar(100) DEFAULT NULL COMMENT '电子邮件', `phone_number` varchar(20) DEFAULT NULL COMMENT '电话号码', `address` varchar(255) DEFAULT NULL COMMENT '地址', `city` varchar(100) DEFAULT NULL COMMENT '城市', `country` varchar(100) DEFAULT NULL COMMENT '国家', `postal_code` varchar(20) DEFAULT NULL COMMENT '邮政编码', `job_title` varchar(100) DEFAULT NULL COMMENT '职务', `department` varchar(100) DEFAULT NULL COMMENT '部门', `salary` decimal(10,2) DEFAULT NULL COMMENT '工资', `employment_status` enum('全职','兼职','合同工','实习生') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '就业状态', `hire_date` date DEFAULT NULL COMMENT '入职日期', `termination_date` date DEFAULT NULL COMMENT '离职日期', `manager_id` int DEFAULT NULL COMMENT '上级领导ID', `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,默认为当前时间', `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间,默认为当前时间,自动更新', PRIMARY KEY (`id`), KEY `idx_name` (`name`), KEY `idx_department` (`department`), KEY `idx_job_title` (`job_title`) ) ENGINE=InnoDB AUTO_INCREMENT=11111001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='人员信息表' | +----------+-----------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)