SQL select *与选择特定列

时间:2013-12-17 07:30:19

标签: sql sql-server

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

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

这是真的吗?

由于

6 个答案:

答案 0 :(得分:5)

最佳做法是明确命名要选择的列。

正如米奇刚才所说,表现并没有什么不同。我甚至听说在使用*时查找实际列名称的速度较慢。

但优势在于,当您的表格发生变化时,您的选择不会在您为列命名时发生变化。

答案 1 :(得分:2)

我认为这两个问题herehere都有令人满意的答案。 *并不是更好,实际上它更慢是选择*不好的一个原因。除此之外,根据OMG小马,选择*是反模式。请参阅链接中的问题以获取详细信息。

答案 2 :(得分:2)

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

它还需要更少的更改,因为任何使用数据的代码都将获得相同的数据结构,无论您将来对表模式所做的更改。

答案 3 :(得分:1)

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

SELECT *的效果更差

答案 4 :(得分:0)

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

答案 5 :(得分:0)

这取决于。

选择所有列可以使查询更慢,因为需要从磁盘读取所有列 - 如果有很多 string 列(它们不在索引中)然后它会对查询(IO)性能产生巨大影响。从我的实践 - 你需要所有专栏。

另一方面 - 对于具有少量用户和足够好的硬件的小型数据库,只选择所有列更容易 - 特别是如果架构经常更改。

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