这个问题存在很多争议,不管是有经验的还是初学者,都会有各自的见解,主要还是以业务区分为主。
一下是个人看法:
在工作中尽量不使用select * ,原因有很多大致可以理解为一下几点:
1.使用规范
2. 在字段过多的情况下,会导致资源浪费。
3. select * 在 innodb 引擎上必然会回表查询,也会造成 io 的压力,后者是情况而定,如果查询的索引字段,不需要会表,可以提升查询效率和降低 io 压力,在 myisam 引擎上则只有 io 压力的区别。
一下情况可以使用 select *
1.对于做 ORM 结构,通用代码实例化一般为字段全部取出,这时 select*在维护性上会稍好一些
2.使用Redis缓存,也是建议select *
3.在Go中,会生成对应的model,包括对应字段类型、注释等。生成基础的结构体。一般采用指针结构全局引用。