首页 >

mysql执行计划 快速获取总数 |mysql读写要加锁吗

phpstudy mysql 5.6,mysql doesn t exit,java 连接mysql的包,sql文件在mysql打开,mysql event查看状态,mysql读写要加锁吗mysql执行计划 快速获取总数 |mysql读写要加锁吗

大家可以使用COUNT(*)函数来获取数据总数,但是这样会导致MySQL进行全表扫描,耗费大量的资源。为了避免这种情况,大家可以使用EXPLAIN关键字来查看执行计划:

EXPLAIN SELECT COUNT(*) FROM table_name;

执行上述SQL语句后,大家可以看到MySQL的执行计划。

+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table     | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | table_name| ALL  | NULL          | NULL | NULL    | NULL | 1000 | Using where;|
+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+

其中,id列表示每个SELECT查询的顺序,1表示第一个查询;select_type列表示SELECT查询的类型,SIMPLE表示不包含UNION或子查询;table列表示查询的表名;type列表示MySQL在查询时使用了什么类型的索引,ALL表示没有使用索引;key列表示MySQL在查询时使用的索引名称;rows列表示MySQL预计要扫描的行数;Extra列包含了其他的一些信息,如是否使用了临时表、是否使用了文件排序等。

从上述执行计划中,大家可以看到MySQL没有使用索引,需要扫描全部的1000行数据。为了加速查询速度,大家可以添加一个索引:

ALTER TABLE table_name ADD INDEX `index_name` (`column_name`);

之后,大家再执行获取数据总数的SQL语句,再次查看执行计划:

EXPLAIN SELECT COUNT(*) FROM table_name;

此时,大家可以看到MySQL的执行计划已经发生了变化:

+----+-------------+-----------+-------+---------------+------------+---------+------+------+-------------+
| id | select_type | table     | type  | possible_keys | key        | key_len | ref  | rows | Extra       |
+----+-------------+-----------+-------+---------------+------------+---------+------+------+-------------+
|  1 | SIMPLE      | table_name| index | NULL          | `index_name`| 4       | NULL | 1000 |             |
+----+-------------+-----------+-------+---------------+------------+---------+------+------+-------------+

这次,MySQL使用了索引,只需要扫描全部的1000行数据就可以获取数据总数,从而大大提高了查询速度和减少了资源消耗。


mysql执行计划 快速获取总数 |mysql读写要加锁吗
  • mysql php 搜索引擎 |mysql 查询每个表的记录数
  • mysql php 搜索引擎 |mysql 查询每个表的记录数 | mysql php 搜索引擎 |mysql 查询每个表的记录数 ...

    mysql执行计划 快速获取总数 |mysql读写要加锁吗
  • 如何判断MySQL数据库中字段是否为空 |mysql 存储图片 利弊
  • 如何判断MySQL数据库中字段是否为空 |mysql 存储图片 利弊 | 如何判断MySQL数据库中字段是否为空 |mysql 存储图片 利弊 ...

    mysql执行计划 快速获取总数 |mysql读写要加锁吗
  • MySQL高效查询方法不使用JOIN操作实现数据查询 |linux下mysql批量导入sql文件
  • MySQL高效查询方法不使用JOIN操作实现数据查询 |linux下mysql批量导入sql文件 | MySQL高效查询方法不使用JOIN操作实现数据查询 |linux下mysql批量导入sql文件 ...