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)