SELECT * FROM
或
SELECT specified FROM
background:table有一个字段(specified
),它同时是主索引
答案 0 :(得分:6)
在您的特定情况下,它可能完全相同,但作为一种良好实践,您应始终指定所需的列。
除了Dark Falcon提出的各种好理由之外,它还在您的应用程序代码中创建了一种自我文档形式,因为它直接在您期望的每个字段的查询中。
答案 1 :(得分:5)
作为一种良好实践,通常最好明确指定所需的列,而不管您在此问题中关注的性能影响。
但总的来说,答案很大程度上取决于您的mysql
版本。对其进行剖析并查看:
explain select * from ...;
explain select specified from ...;
我强烈怀疑这是一个过早优化的情况,并且你真的需要知道哪个更快。
答案 2 :(得分:1)
Imho显式版本会更快,因为mysql不需要查找表中包含的字段。
答案 3 :(得分:0)
根据表格结构(包括索引),它可能没有什么区别 - 运行一些基准测试并使用EXPLAIN SELECT
查看可以改进的地方将帮助您顺利完成。但一般来说,如果你知道你只想要n个字段,那么只选择n个字段。
答案 4 :(得分:0)
只需指定它,以防将来添加更多列,但您不想检索所有列。无论如何,最好是具体的。
答案 5 :(得分:0)
编写一个带有2个函数的控制台应用程序,执行这两种方法并在每个方法上循环1000次,并打印出它所花费的平均时间。这将是您测试性能的最快方法。
答案 6 :(得分:0)
通常它会更好,我认为在sql查询中指定一些内容以避免获得一些无用的数据会更快
答案 7 :(得分:0)
“选择*来自”格式imho只是一个快速的方式,当你作为dba查询时,你只需要快速浏览一下桌子。即使它在编程中起作用,我也不推荐它,通过将列列为程序员,它使您不必回到数据库并查看要使用或查询的列。它让你在一个地方......虽然这只是我...但这真的取决于你以及你想如何编程。
答案 8 :(得分:0)
你正在看这个低音。你是否需要专栏的内容,如果你没有,你得到它,这将需要更长的时间。
解析sql以检查列名,对它们进行排序以及可能对它们进行别名,与充斥网络传输大量不需要的东西相比,这是微不足道的。