我刚刚在 session 发言人幻灯片中读到了这个声明,来自一个似乎知道自己在说什么的人:
In MySQL, fetching a column value forces a read of the entire row [so aggressivly fetching contents there makes sense].
所以我的问题是:这是否意味着在多列数据库表查询中以下查询的成本完全相同?我这么问是因为这几乎涵盖了我以前听说过的有关 MySQL 的所有内容。
查询 1:
SELECT id FROM mytable WHERE flag = 1;
查询 2:
SELECT * FROM mytable WHERE flag = 1;
最佳答案
我想这是不正确的。我清楚地记得我的毕业老师告诉我们一些案例,例如,由于使用“SELECT *...”而不是“SELECT id...”,某个应用程序的性能非常糟糕。
也许您可以尝试制作一个真实的示例,以两种方式在一系列 SQL 查询之前和之后运行时间戳并比较其结果。
编辑:使用 SELECT * FROM table
和 SELECT id FROM table
在 SQL Fiddle ( http://sqlfiddle.com/#!2/32954/2 ) 上尝试一个简单的架构,对于 95 行,“*”的平均时间约为 10 毫秒,对于相同的 95 行,“id”的平均时间为 1 毫秒。我不知道 SQL Fiddle 是否是一个值得信赖的来源,但我认为它可以给我们一个想法。
关于mysql - 这是真的吗 : "In MySQL, fetching a column value forces a read of the entire row"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18131196/