我有一个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时间。
答案 0 :(得分:1)
共享数据的最有效方法是部署OData服务。有一些OData客户端,比如datajs和Breeze.js,它们允许你以类似于LINQ的方式工作来查询数据:它可以过滤,分页,排序甚至缓存数据,并在服务器上更新它。
Google for SQL Azure OData&#39;,您可以找到有关如何执行此操作的信息:Creating and Hosting OData Service in Azure。
有关微风的更多信息,look here。 datajs offers less functionalities,但您也可以使用它。
顺便说一下,我忘了说OData不支持类似于LIKE的东西,但你可以使用startswith
,endswith
和substringof
来覆盖部分LIKE案例