SELECT * 与 SELECT id 性能对比

时间差主要在 “Sending data” 上,其操作包括 “收集+发送 数据”。

实验环境:

  • mysql 5.6.42 远程数据库
  • navcat 11.2.7
  • a_table 有约100个字段,约10万行数据
  • id 唯一主键

实验步骤

对比SELECT * 与 SELECT id 的性能

1
SELECT * FROM a_table

SELECT *

1
SELECT id FROM a_table

SELECT *

结果

  • SELECT * 总计用时 53.744s
  • SELECT id 总计用时 0.936s

结论

  • 时间差主要在Sending data上,其操作包括 “收集+发送 数据”。
    收集数据的原因是:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回给客户端。