【问题标题】:SQL SELECT clause tuningSQL SELECT 子句调优
【发布时间】:2020-04-18 01:55:24
【问题描述】:

如果我在SELECT 语句中使用实际列名而不是SELECT *,为什么sql 查询执行得更快?

【问题讨论】:

  • 您是说SELECT * 还是SELECT list of all columns in the table?如果是这样,应该几乎是零差异。如果您的意思是 SELECT *SELECT list of only some of the columns in the table,那么这很容易解释。
  • 您问这个问题是因为您发现您正在使用的系统有所不同,还是因为您听说您不应该使用SELECT *
  • 您使用的是什么数据库产品?

标签: sql sql-tuning


【解决方案1】:

一个明显的差异似乎很奇怪......因为我希望它是一个非常微小的差异并且很想测试它。

使用Select * 的语句中的任何差异可能是因为它需要额外的时间来找出所有列名。

【讨论】:

    【解决方案2】:

    因为根据查询,它必须确定是否有唯一的名称,它们都是什么等等。如果你指定它,它就完成了。

    【讨论】:

    • 但它仍然需要验证指定的列是否存在等。
    • 哦,确实如此,但如果你说的是 tablea.id、tableb.something.. 并且两者都有 id,它不必尝试确定它使用哪个 id 或者如果 id 不明确,尽管我在时间方面考虑过,但差异应该很小。我希望某些时间显示的时间超过几毫秒。
    【解决方案3】:

    一般来说,你告诉它的越多,它计算的就越少。许多系统都是如此。

    【讨论】:

      【解决方案4】:

      当你选择某些列名时,性能可能比 Select * 好得多,这是一个很好的理由,只需检查你是否使用了已经被索引的列,在这种情况下,优化器会制定一个计划来选择所有数据仅来自索引而不是实际表。但是一定要检查一次计划。

      【讨论】:

        猜你喜欢
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 2019-12-31
        • 2016-01-05
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 2013-04-06
        相关资源
        最近更新 更多