为什么不要用select *
很可能这会是一个面试题
主要从以下几个角度:
1. 程序变更问题,出现不可以预知隐患;
假设某一天修改了表结构,如果用select *,返回的数据必然会会变化,客户端是否对数据库变化作适配,是否所有地方都做了适配,这都是问题。
2. 性能问题
a. 使用了select ,必然导致数据库需要先解析代表哪写字段,从数据字段中将*转化为具体的字段含义,存在性能开销;
b. 不可能对所有字段建索引,在索引优化必然会有局限性,导致查询时性能差;
c. 可能会存在不需要的列,传输过程中有不必要的性能损耗;
d. 客户端解析查询结果也需要更多损耗;
所以select *不存在对应用实际的任何好处,不但影响性能,而且应用变更中都是坑。