select * from tablename和selectname column1,column2 from tablename之间是否存在性能差异?

时间:2009-12-08 09:24:12

标签: sql mysql query-optimization

  

可能重复:
  Select * vs Specifying Column Names
  Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc.

select * from tablenameselect column1, column2 from tablename之间是否存在性能差异?

当它为select * from时,数据库会提取超过2个字段/列的所有字段/列。那么第一个查询会花费更多的时间/资源吗?

7 个答案:

答案 0 :(得分:5)

如果您select * from,则有两个性能问题:

  1. 数据库必须确定表中存在哪些列
  2. 从服务器向客户端发送的数据更多(所有列而不是仅有两列)

答案 1 :(得分:1)

在每种情况下,您始终应 测试您的更改 。您可以使用分析器来执行此操作。

对于mysql,请参阅:http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html

答案 2 :(得分:1)

一般来说答案是肯定的!因为对于小型数据库,您没有看到性能差异......但如果您使用不合格的*选择器作为速记,则最大的数据库可能会产生相关差异!

通常,最好实例化要从中检索数据的每一列!

我建议你阅读the official document关于如何优化SELECT和其他语句的内容!

答案 3 :(得分:0)

存在差异,特别是在其他列是BLOB或(大)TEXT字段的情况下。如果您的表只包含两列,则没有区别。

答案 4 :(得分:0)

我已经使用了探查器进行了检查 - 似乎答案是否定的 - 两个查询都花了相同的时间来执行。 该表具有相对较小的字段,因此结果集不会随着我可能不需要的大量数据而膨胀。 如果您的结果集中不需要大型数据字段,请不要在查询中包含它们

答案 5 :(得分:0)

虽然这可能不会对一个查询运行一次产生很大的影响,但是如果你通过应用程序使用select *,特别是如果你在进行连接时使用它肯定会返回不需要的数据,那么你很清楚除了开发人员的懒惰之外没有其他充分理由放慢系统速度。选择*几乎不应该在生产系统上使用。

答案 6 :(得分:0)

嗯,我想这取决于你所谈论的性能类型:数据库或程序员。

作为必须清理

中编写的数据库查询的人
select * from foo

格式,这是一场彻头彻尾的噩梦。数据库可以而且确实发生了变化,因此现在整洁而整洁的规范化数据库由于性能原因而变得非规范化,并且为了抓住所有内容而编写的草率查询的主机现在正在减少更多的数据。

如果您不需要,请不要求它。花一点时间,想想那些跟随你并且需要处理你的选择的人。

我仍然在我们的LIMS中有一整段用于取消群集,感谢提醒我。 - 叹气