应该编译什么类型的Linq to SQL查询?

Die*_*xel 6 c# entity-framework linq-to-sql

我正在项目中使用Linq to SQL,并阅读有关框架效率低下的文章.我已经读过,提高性能的一种方法是创建编译查询.所有查询都会更好地编译吗?或者在某些情况下它可能没有多大区别?我认为这对于获得大量流量的大规模应用程序至关重要.

谢谢.

Nar*_*ian 4

我以前遇到过这个。编译查询可能是一件很棒的事情,并且确实可以显着提高性能。但这并不总是最好的解决方案。

我正在处理一些需要 30 到 40 分钟才能运行的报告。我发现我们对某些查询调用了成百上千次。编译查询确实有所改善,但还远远不够。

我最终所做的是运行更少的查询,返回更多的数据。这是较少的打开和关闭连接。结果是不到一分钟的报告。

因此,如果您必须多次运行某个查询,那么编译它是一个不错的选择。如果它运行了数百或数千次,您可能只需要一种新方法。

关于这两件事的一些帖子:

用于报告的 SQL 查询优化:不同的方法

http://www.foliotek.com/devblog/sql-query-optimization-for-reporting-a- Different-approach/

Linq 中预编译查询的意想不到的好处:

http://www.foliotek.com/devblog/unexpected-benefits-of-precompilation-of-linq/

另一件需要考虑的事情是数据库上的索引。你的查询很慢,但你不知道为什么慢。如果它正在搜索未索引的列,那么这也可能是您的问题。