Sql通配符:性能开销?

Geo*_*Ego 3 sql performance wildcard overhead sql-execution-plan

我用Google搜索了这个问题,似乎无法找到一致的意见,或许多基于可靠数据的意见.我只想知道在SQL SELECT语句中使用通配符是否会产生额外的开销,而不是单独调用每个项目.我已经在几个不同的测试查询中比较了两者的执行计划,似乎估计总是读取相同的.是否有可能在其他地方产生一些开销,或者它们是否真的处理相同?

我具体指的是:

SELECT *
Run Code Online (Sandbox Code Playgroud)

SELECT item1, item2, etc.
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 9

SELECT * FROM...
Run Code Online (Sandbox Code Playgroud)

SELECT every, column, list, ... FROM...
Run Code Online (Sandbox Code Playgroud)

将执行相同的操作,因为两者都是未经优化的扫描

不同之处是:

  • sys.columns中的额外查找以解决*
  • 表模式更改时合同/签名更改
  • 无法创建覆盖索引.事实上,根本没有调整选项
  • 如果没有schemabound,则必须刷新所需的视图
  • 无法使用*索引或架构视图
  • ......和其他东西

关于同一主题的其他SO问题......