现在要从数据库中检索数据,并对检索后数据进行操作,有以下两种方法:
1.一次检索出需要的所有数据,再对数据进行操作
2.先检索出一部分数据,对这部分数据操作完,再利用这部分数据检索其他数据,再操作其他数据
比如:id和parentId,id可以根据parentId检索出来,那么是应该检索出所有数据集中处理还是先检索parentId,处理完parentId后再检索id,处理id再将处理的结果合并返回?
从效率分析应该是一起检索出来的快,毕竟减少了与数据库之间的交互;但是由于检索结果比较复杂,那么程序处理也就相应复杂,程序的可读性就变差了。而另一种方法则相反,牺牲掉一部分性能增加了良好的可读性。
所以请问下,如果各位遇到相同情况会如何选择
这种情况需折中
如一条sql 在以下场景可以改成多条sql:
一条sql无法利用索引 但拆成多条可以;
如果连表太多 可以拆 否则连表一般是嵌套查询 增加了复杂度;
一条sql的性能 > 多条sql的性能 不成立
这个要看你的数据量的吧,如果你有1亿条数据,那当然选第2种方法了
看场景,看数据量吧
我遇到过类似的问题,一开始采用嵌套查询,逻辑简单,后来当parent数据量稍微大些会使性能急剧下降,最后又重构为第一种方法