LINQ 在列表或表格上更快吗?

Mat*_*ieu 1 c# sql linq visual-studio

我有很多查询要做,我想知道查询 List 和 DataTable 甚至 SQL 服务器索引表之间是否存在显着的性能差异?或者如果我选择其他类型的收藏会更快吗?

一般来说,你怎么看?

谢谢!

Ada*_*kis 5

它应该几乎总是更快地查询内存中的任何内容,例如 aList<T>DataTablevis-a-vis 数据库。

话虽如此,在查询数据之前,您必须将数据放入内存对象(如 List)中,因此我当然希望您不要考虑将数据库转储到 a 中List<T>以进行快速查询。那将是一个非常糟糕的主意。

我明白你的问题了吗?

  • 请记住,“过早的优化是万恶之源”——Donald Knuth。只需像往常一样编写代码 - 针对数据库编写代码,如果所有这些查询都使它变得太慢,那么您可以考虑优化它的方法,例如预加载所有数据并在内存中搜索。 (2认同)
  • 如果您真的必须针对一组数据运行数百个完全不同的“子查询”,那么它几乎肯定会在内存中更快。但是现在你在谈论缓存:这些查询真的都不同吗?或者您只是重复使用一些相同的查询?SQL 服务器将缓存查询已经。你可能没有节省多少。许多因素可能会影响这一点:数据的大小和类型,实际使用了多少数据(例如,只是最终返回的数据的一小部分)等。但这是学术性的:+1 表示不预优化。这些都不重要。 (2认同)