use*_*019 10
始终对数据库进行查询.如果不这样做,则必须将更多数据复制到客户端,并且编写数据库以有效地过滤数据,几乎肯定比代码更有效.
我能想到的唯一例外是过滤条件是否计算复杂,并且您可以将计算分散到比数据库更多的CPU功率上.
在我拥有数据库的情况下,服务器拥有比客户端更多的CPU能力,因此除非过载,否则只需更快地运行查询以获得相同数量的代码.
此外,您必须使用Hibernates查询语言编写较少的代码来对数据库进行查询,而不是必须编写代码来操作客户端上的数据.Hibernate查询还将在配置中使用任何客户端缓存,而无需编写更多代码.
编程中经常使用一个通用技巧——支付内存来提高运行速度。如果您有很多员工,并且您要一一查询其中的很大一部分(例如,一次查询 75%),然后查询所有内容,并将其缓存(非常重要!),并完成内存中的查找。下次查询时,跳过到 RDBMS 的旅程,直接进入缓存并进行快速查找:与内存中的哈希查找相比,到数据库的往返非常昂贵。
另一方面,如果您要访问一小部分员工,则应该只查询一名员工:从 RDBMS 到您的程序的数据传输需要大量时间、大量网络带宽、大量内存, RDBMS 端有大量内存。查询大量行并丢弃除一行之外的所有行是没有意义的。