c# – Linq:SqlFunctions.PatIndex vs string.Contains for string comparisson

相同查询的以下哪个版本的性能会更好:版本1(string.Contains):var query = db.Products.Where( p = p.Description.Contains( description ) );版本2(SqlFunctions.PatIndex):var query = db.Products.Where( p ...

相同查询的以下哪个版本的性能会更好:

版本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  );

解决方法:

我相信版本1在理论上运行得更快.

原因:

>两个版本最终都会转换为SQL查询.
>版本1转换为具有“like”运算符的where子句的查询
>版本2转换为具有’PatIndex’功能的where子句的查询.
>我们知道在与大型数据集中的纯’like’运算符进行比较时,SQL中的函数将需要更长的时间来返回结果.

本文标题为:c# – Linq:SqlFunctions.PatIndex vs string.Contains for string comparisson

基础教程推荐