我想知道哪种是最佳做法。不要说我有一个包含10多列的表格,我想从中选择数据。
我听说'select *'更好,因为选择特定的列会让数据库在选择之前搜索这些列,而选择all只会抓取所有内容。另一方面,如果表中有很多列,该怎么办?
这是真的吗?
由于
答案 0 :(得分:5)
*
时查找实际列名称的速度较慢。
但优势在于,当您的表格发生变化时,您的选择不会在您为列命名时发生变化。
答案 1 :(得分:2)
答案 2 :(得分:2)
选择特定列更好,因为它提高了SQL Server可以从索引访问数据而不是查询表数据的可能性。
它还需要更少的更改,因为任何使用数据的代码都将获得相同的数据结构,无论您将来对表模式所做的更改。
答案 3 :(得分:1)
绝对不是。尝试从包含数百万行和数十列的表中创建SELECT *
。
SELECT *
的效果更差。
答案 4 :(得分:0)
这取决于你要对结果做些什么。选择不必要的数据也不是一个好习惯。你不会用你永远不会使用的值创建一堆变量。因此,选择您不需要的许多列也不是一个好主意。
答案 5 :(得分:0)
这取决于。
选择所有列可以使查询更慢,因为需要从磁盘读取所有列 - 如果有很多 string 列(它们不在索引中)然后它会对查询(IO)性能产生巨大影响。从我的实践 - 你需要所有专栏。
另一方面 - 对于具有少量用户和足够好的硬件的小型数据库,只选择所有列更容易 - 特别是如果架构经常更改。
但是 - 我总是建议明确选择列,以确保它不会影响性能。