Linq: SqlFunctions.PatIndex vs string.包含用于字符串比较

本文关键字:包含 用于 字符串 比较 string vs SqlFunctions PatIndex Linq | 更新日期: 2023-09-27 17:50:33

对于相同的查询,以下哪个版本会执行得更好:

版本1:

var query = db.Products
    .Where( p => p.Description.Contains( description ) );

Version 2 (SqlFunctions. xml)PatIndex):

var query = db.Products
    .Where( p => SqlFunctions.PatIndex("%" + description + "%",p.Description) > 0  );

Linq: SqlFunctions.PatIndex vs string.包含用于字符串比较

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

原因:

  1. 两个版本最终都转化为SQL查询。
  2. 版本1转换成带有'like'操作符的where子句的查询
  3. 版本2翻译成一个带有'PatIndex'函数的where子句的查询。
  4. 我们知道,在大数据集中,与纯'like'操作符相比,SQL中的函数返回结果需要更长的时间。