查询List <t>或数据库是否更快?</t>

时间:2012-05-06 00:37:45

标签: c# asp.net database performance linq

我最近有几种情况需要来自同一个表的不同数据。一个例子是我将遍历每个“交付驱动程序”并为他们要交付的每个客户生成可打印的PDF文件。

在这种情况下,我拉了所有客户并将其存入

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

当我通过送货司机时,我会做这样的事情:

List<Customer> DeliveryCustomers = AllCustomersList.Where(a => a.DeliveryDriverID == DriverID);

我的问题:通过查询List对象比每次查询与传递驱动程序关联的客户记录的数据库更快,我是这样做的吗?

3 个答案:

答案 0 :(得分:13)

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

但经验法则是,DB设计用于处理大量数据,并且它们具有优化&#34;机制&#34;而在记忆中并没有这样的事情。

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

&#34;我们应该忘记效率低,大约97%的时间说:过早 优化是所有邪恶的根源&#34;

答案 1 :(得分:1)

避免往返数据库往返是有关数据库性能调优的主要规则之一,尤其是当数据库位于网络上并且有多个用户访问它时。

从另一个角度来看,将大型结果集带入内存,就像您的客户数据看起来一样,效率并不高于您在需要时前往数据库的速度。

内存集合中的一个很好的用途是避免往返行程是您的查找表(即客户类别,客户区域等),这些表格不会经常更改。这样您就可以避免在主要客户选择查询中加入,从而加快查询速度。

答案 2 :(得分:1)

为什么不使用Redis? ,它是一个内存数据库,而且速度非常快。