最近,我遇到了几种情况,其中我需要来自同一张表的不同数据。一个示例是,我将遍历每个“交付驱动程序”,并为要交付给每个客户的客户生成可打印的PDF文件。

在这种情况下,我吸引了所有客户并将其存储到

List<Customer> AllCustomersList = customers.GetAllCustomers();

在遍历交付驱动程序时,我将执行以下操作:
List<Customer> DeliveryCustomers = AllCustomersList.Where(a => a.DeliveryDriverID == DriverID);

我的问题:通过查询List对象来执行此操作的方式是否比每次查询数据库中与传递驱动程序相关联的客户记录的速度快?

最佳答案

没有正确的行数,如果传递了行数,则应该在内存中List<T>中查询数据库

但是经验法则是,DB被设计为处理大量数据,并且具有优化的“机制”,而在内存中则没有这种东西。

因此,您需要对其进行基准测试,以查看对于每次来说很重要的每次行数据量是否值得进行DB往返

“我们应该忘记效率低下的问题,例如大约97%的时间:过早
优化是万恶之源

07-28 14:01
查看更多