SELECT*FROM与SELECT指定的FROM


SELECT * FROM versus SELECT specified FROM

什么会更快?

SELECT * FROM

SELECT specified FROM

背景:表有一个字段(specified),它同时也是主索引

在您的特定情况下,它可能完全相同,但作为一种良好的实践,您应该始终指定所需的列。

除了Dark Falcon发表评论的各种充分理由外,它还在应用程序代码中创建了一种形式的自文档,因为它直接在您期望的每个字段的查询中。

作为一种良好的做法,无论您在这个问题中关心的性能影响如何,通常最好明确指定所需的列。

但总的来说,答案将在很大程度上取决于您的mysql版本。对其进行分析并查看:

explain select * from ...;
explain select specified from ...;

我强烈怀疑这是一种过早优化的情况,并且您不需要知道哪个更快。

Imho显式版本会更快,因为mysql不需要查找表中包含的字段。

根据表结构(包括索引)的不同,这可能不会有什么不同——运行一些基准测试并使用EXPLAIN SELECT来查看哪里可以改进,这将对您有所帮助。但一般来说,如果你知道你只想要n个字段,那么只选择n个字段。

只需指定它,以防将来添加更多列,但您不想检索所有列。无论如何,最好是具体一点。

编写一个带有两个函数的控制台应用程序,分别执行这两个方法并循环1000次,并打印出平均所需时间。这将是测试性能的最快方法。

通常情况下,在sql查询中指定一些内容会更好,我认为也会更快,以避免获得一些无用的数据

当查询为dba时,"select*from"格式的imho只是一种快速的方法——你只想快速浏览一下表。尽管这在编程中会起作用,但我不建议这样做,通过作为程序员列出列,您不必来回访问数据库,查看要使用或查询的列。它让你停留在一个位置。。不过只有我一个人。。这真的取决于你和你想要如何编程。

您看到的是这个低音。你是否需要专栏的内容,如果你不需要,并且你得到了,那将需要更长的时间。

与充斥网络传输大量不需要的东西相比,分析sql以检查列名、排序并可能对其进行别名是微不足道的。