I just found that the same code is duplicated in ModelStorage and ModelSQL, it fills the fields_names when not set. This makes me re-think about this behavior. Indeed it should be considered as a bad practice and performance killer to read all the fields like that. clients nor proteus do such think.
So I propose to remove this behavior and force user to always list the fields read.