对于相同的查询,以下哪个版本会执行得更好:
版本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 );
我相信版本1理论上运行得更快。
原因:
- 两个版本最终都转化为SQL查询。
- 版本1转换成带有'like'操作符的where子句的查询
- 版本2翻译成一个带有'PatIndex'函数的where子句的查询。
- 我们知道,在大数据集中,与纯'like'操作符相比,SQL中的函数返回结果需要更长的时间。