Open hduyyg opened 1 year ago
查询解析器指的是这个
ps:
- 为啥会导致查询解析器有一个需要关注的解析成本?
ps:
- 不要说 会解析全字段,手册说的是写清楚要查的字段,而不是不要查询不必要的字段。我既然用,就要要查询全字段,所以这个问题也可以简化成:使用 * 查询全字段,与在sql把全字段写出来,多出来的成本?
- "需要关注的成本",任何操作都是有成本的,但是不是所有成本都需要我们关注。
是的,首先第一点我觉得你说的没错,既然你已选择查询所有的字段,那就没有必要把所有的字段写出来,直接用*代替会清晰明了很多,其次第二点我觉得也没问题,查询解析器的成本确实很低,可以忽略不计了,不然也不会有这个语法的出现,可能是对于这方面过于苛刻过于精益求精了。但是我想说的是,阿里规约是阿里规约,并不是每个人都要遵守,这个东西本来就是仁者见仁智者见智的事情,就好像写代码时有人觉得花括号需要另起一行,有的人觉得写在行尾好一点一样。这只不过是统一标准统一口径罢了,没必要过度深究,毕竟一千个读者就会有一千个哈姆雷特,如果是个人项目的开发,自己写的开心就好了,如果是团队开发,那总要有一个人制定标准,其他人遵守标准,仅此而已。
规约原文
【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明:1)增加查询分析器解析成本。2)增减字段容易与resultMap配置不一致。
问题描述
我认为这条规约不合理。
修改建议
我认为在普遍情况下,出于开发、复用的成本考虑,都应当是默认查询所有数据库表字段。 只有在涉及性能优化时,根据where条件加索引还无法满足需求时,才进一步考虑写明字段,以减少io和覆盖索引。 出于方便的考虑,使用 * 作为查询字段列表,是合理且高效的。