可能的重复:
哪个更快/最好? SELECT * 或 SELECT 列 1、列 2、列 3 等 https://stackoverflow.com/questions/65512/which-is-faster-best-select-or-select-column1-colum2-column3-etc
不使用 select * 的原因是什么? https://stackoverflow.com/questions/321299/what-is-the-reason-not-to-use-select
使用 SELECT * 而不是 SELECT FiledName, FiledName2 ... 是否存在任何性能问题?
如果您需要列的子集,那么您会给优化器带来不好的帮助(无法选择索引,或者不能仅选择索引,...)
某些数据库可以选择仅从索引检索数据。那东西非常非常有帮助,并且提供了令人难以置信的加速。运行 SELECT * 查询不允许使用此技巧。
无论如何,从应用的角度来看都不是一个好的做法。
对此的示例:
- 您有一个包含 20 列的表 T(C1、C2、...、C19 C20)。
- 您在 T 上有 (C1,C2) 的索引
- 你让
SELECT C1, C2 FROM T WHERE C1=123
- 优化器拥有索引的所有信息,不需要去表数据
相反,如果你SELECT * FROM T WHERE C1=123
,优化器需要获取所有列数据,那么(C1,C2)上的索引就不能使用。
在连接多个表时非常有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)