【问题标题】:What is the difference in selecting all the columns by * and by specifying all column names in SQL query to retrieve data? [duplicate]通过 * 选择所有列和在 SQL 查询中指定所有列名来检索数据有什么区别? [复制]
【发布时间】:2018-12-18 05:50:51
【问题描述】:

假设我有一个包含 id, name, contact 列的表。

获取数据有什么区别

SQL 查询 #1:

SELECT * 
FROM table

和 SQL 查询 #2:

SELECT id, name, contact 
FROM table

【问题讨论】:

  • 目前 - 没有区别。但是,如果您稍后碰巧在表中添加了一个 blob 列,其中包含 很多 二进制数据(图像等) - 那么查询 #1 将变慢到爬行(因为它也会正在检索该 blob 列),而 #2 将保持快速
  • 除了 Marc 上面的评论,阅读重复链接还有其他一些原因在你的代码中使用SELECT *

标签: sql database relational-database query-performance


【解决方案1】:

SELECT * FROM table - 它会选择所有列,即使这些列是否有用。 如果您选择所有列而不是一些内存开销和耗时。 例如,假设您选择了所有列并存储在某个 java 对象中,那么这没有用,而不是选择那些对您的操作有用的列。

【讨论】:

  • 我正在通过两个查询检索所有数据。所有数据都将被使用。但 DBA 表示在性能和数据返回方面存在差异。所以很好奇这个问题
  • 从 DBA 的角度来看,他们还建议根据查询执行成本添加查询提示。如果您使用的是 todd,则可以通过 CTl+E 检查执行成本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2010-09-13
  • 2016-12-27
  • 2020-04-28
  • 2019-09-06
  • 2014-02-16
相关资源
最近更新 更多