Fer*_*anB 8

如果你需要列的一个子集,你会给优化器提供不好的帮助(不能选择索引,或者不能只选择索引,......)

某些数据库可以选择仅从索引中检索数据.那件事非常有帮助,并给出了令人难以置信的加速.运行SELECT*查询不允许这个技巧.

无论如何,从应用的角度来看并不是一个好习惯.


示例:

  • 你有一个带有20列的表T(C1,C2,...,C19 C20).
  • 你有一个关于(C1,C2)的T的索引
  • 你做 SELECT C1, C2 FROM T WHERE C1=123
  • 优化器具有索引的所有信息,不需要去表Data

相反,如果您SELECT * FROM T WHERE C1=123,优化器需要获取所有列数据,则不能使用(C1,C2)上的索引.

在多个表的连接中有很多帮助.


And*_*are 5

唯一的性能问题是您的应用程序是否只需要select *. 数据库中没有性能差异,因为它们实际上是相同的。

  • +1 - 这在回答这个问题时经常被忽视。如果只有名为 col1、col2 和 col3 的三列,则 `SELECT col1, col2, col3` 和 `SELECT *` 是相同的。 (2认同)

cjk*_*cjk 5

你做一个选择*每次,还有就是可能是一个额外的查询来获取列的列表.在高事务环境中,这可能会成为一个可见的开销,但是偶尔会有所不同.

此外,在插入记录时,如果添加了列,请不要在插入中使用select*.