【问题标题】:SQL select * vs. selecting specific columns [duplicate]SQL选择*与选择特定列[重复]
【发布时间】:2014-01-04 20:58:25
【问题描述】:

我想知道哪个是最佳做法。以免说我有一个包含 10 多列的表,我想从中选择数据。

我听说'select *' 更好,因为选择特定列会使数据库在选择之前搜索这些列,而选择所有只是抓取所有内容。另一方面,如果表中有很多列怎么办?

这是真的吗?

谢谢

【问题讨论】:

标签: sql sql-server


【解决方案1】:

最好明确命名您要选择的列。

正如米奇刚才所说,性能并没有什么不同。我什至听说使用* 时查找实际列名比较慢。

但好处是,当你的表格改变时,你的选择在你命名列时不会改变。

【讨论】:

    【解决方案2】:

    绝对不是。尝试从具有数百万行和数十列的表中创建SELECT *

    SELECT * 的性能会更差

    【讨论】:

      【解决方案3】:

      这取决于您要对结果做什么。选择不必要的数据也不是一个好习惯。您不会使用您永远不会使用的值创建一堆变量。因此,选择许多不需要的列也不是一个好主意。

      【讨论】:

        【解决方案4】:

        我觉得herehere这两个问题都有满意的答案。 * 不是更好,实际上它更慢是 select * 不好的原因之一。除此之外,根据 OMG Ponies 的说法,选择 * 是反模式。有关详细信息,请参阅链接中的问题。

        【讨论】:

          【解决方案5】:

          选择特定的列更好,因为它提高了 SQL Server 可以从索引中访问数据而不是查询表数据的可能性。

          这也需要较少的更改,因为任何使用数据的代码都将获得相同的数据结构,无论您将来对表架构进行什么更改。

          【讨论】:

            【解决方案6】:

            这取决于。

            选择所有列会使查询变慢,因为需要从磁盘读取所有列 -- 如果有很多 string 列(不在索引中)那么它会对查询(IO)性能产生巨大影响。根据我的实践,您需要所有列。

            另一方面——对于具有少量用户和足够好的硬件的小型数据库,只选择所有列要容易得多——尤其是在架构经常更改的情况下。

            但是——我总是建议明确选择列以确保它不会影响性能。

            【讨论】:

              猜你喜欢
              • 2011-06-28
              • 2018-03-17
              • 1970-01-01
              • 2020-08-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-04-06
              • 1970-01-01
              相关资源
              最近更新 更多