我注意到有很多列的表的一些查询,当我这样做时:
SELECT column1, column2 FROM ...
它几乎可以是我做的速度的 2 倍:
SELECT * FROM ... # ~ 15 columns
是什么导致了返回查询所需的额外时间*
?我最初认为,如果两个查询都检索相同的行,那么性能差异将是微不足道的。造成这种差异的原因是什么?
虽然行数相同,但额外的列需要传输到客户端,消耗网络带宽。需要额外时间的原因与下载 7 倍大的文件需要更长时间的原因相同。可能还需要从磁盘读取原本不需要的块,在某些情况下甚至无法通过仅从索引读取来完成查询。这就是为什么我们鼓励您始终明确指定您的选择列表。
首先要做的是查看“解释计划”,看看一个查询是否会导致与另一个不同的查询计划:
http://dev.mysql.com/doc/refman/5.5/en/execution-plan-information.html
鉴于...
SELECT column1, column2 FROM yourtable
SELECT * FROM yourtable
MySQL 的性能可以通过不止一个因素来改变,例如
……还有更多。在尝试确定哪种方式更快时,您必须考虑所有这些因素。
在大多数情况下,我只查询我想要的列,从而减少应用程序和数据库服务器之间不必要的传输负载。但是...我不得不承认,如果它只有几列,或者如果我想测试一些东西,我有时也会走SELECT *
- 捷径。