LINQ vs SQL存储过程 - 性能和过滤(LIKE vs CONTAINS)

时间:2014-07-10 12:42:01

标签: sql sql-server performance linq tsql

我有一个Azure Cloud Service,它当前连接到一个SQL存储过程,该过程执行select *而没有param。该服务返回json。表中约有10k行。代码有一个列表包含过滤一列。

 List<clsSitesData> lstFilteredData = lstSearchData.Where(s => s.LS_TITLE.ToLower().Contains(SearchData.ToLower())).ToList();

令人惊讶的是,从jquery / knockout客户端消费服务非常快。

从代码中我似乎每次都将整个表加载到列表中。

首先,我认为我会从存储过程中的参数中受益,以限制返回的数据吗?此外,也许一些SQL索引 - 请记住SQL是在Azure上。

但是,LINQ直接对表怎么样,没有LINQ的存储过程我应该期望比上面更快还是更好?

我现在没有遇到性能问题,但我确实需要更多列。还想知道每次拉动所有行是否会花费我的Azure CPU时间。

1 个答案:

答案 0 :(得分:1)

共享数据的最有效方法是部署OData服务。有一些OData客户端,比如datajs和Breeze.js,它们允许你以类似于LINQ的方式工作来查询数据:它可以过滤,分页,排序甚至缓存数据,并在服务器上更新它。

Google for SQL Azure OData&#39;,您可以找到有关如何执行此操作的信息:Creating and Hosting OData Service in Azure

有关微风的更多信息,look heredatajs offers less functionalities,但您也可以使用它。

顺便说一下,我忘了说OData不支持类似于LIKE的东西,但你可以使用startswithendswithsubstringof来覆盖部分LIKE案例