【发布时间】:2014-03-17 13:34:47
【问题描述】:
对于同一查询,以下哪个版本的性能会更好:
版本 1(string.Contains):
var query = db.Products
.Where( p => p.Description.Contains( description ) );
第 2 版(SqlFunctions.PatIndex):
var query = db.Products
.Where( p => SqlFunctions.PatIndex("%" + description + "%",p.Description) > 0 );
【问题讨论】:
-
只需将两个版本都用
Stopwatch计时,看看哪个更快。 -
实际上您的问题与 linq 无关 - 它与
PATINDEX与LIKE的性能有关 -
@SonerGönül,我在询问之前就这样做了,结果无关紧要。我发布这个问题是希望处理过大数据的人表达他在这方面的经验。
-
@Elio.Batista 与从数据库服务器检索数据相比,SQL 生成速度非常快。我也怀疑这两种方法中的任何一种是否会比其他方法快几个滴答声。因此,真正的区别在于在服务器端执行生成的普通 SQL 查询
-
@SergeyBerezovskiy,我会采纳你的建议。我会保持开放,看看其他人是否也可以合作。我正在构建一个非常大的系统 (ERP) 的基础架构,因此在深入开发之前澄清这样的想法对我来说非常重要。谢谢