a)   第一种【耗时11~18s】,这种查询方式并不是很优化,但是目前也没有想到更好的方式,除了创建一张中间表,是不是可以使用【全文索引】?

SELECT * FROM
(
  SELECT  ROW_NUMBER() OVER(ORDER BY IsPutAway) AS Num, * FROM
  (
    SELECT * FROM Goods_1 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_2 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_3 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_4 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_5 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_6 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_7 WHERE Name Like '%测试%' UNION ALL
    SELECT * FROM Goods_8 WHERE Name Like '%测试%'
  ) AS T
) AS T
WHERE Num BETWEEN ((2 - 1) * 10 + 1) AND 2 * 10;

b)   第二种【耗时3~7s】,这种方式采用Linq 并行多线程的方式,查询数据库,再使用程序进行排序并分组。这是我想到的一种解决方式,效果还算理想!

List<VGoodsModel> dataList = new List<VGoodsModel>();
using (var content = CreateContext())
{
List<int> tableIndexList = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
StringBuilder sbSqlAll = new StringBuilder();
sbSqlAll.AppendLine();
tableIndexList.AsParallel().ForAll(o =>
{
StringBuilder sbSql = new StringBuilder();
sbSql.AppendFormat("SELECT * FROM Goods_{0} with(nolock) WHERE", o);
if (Para.GoodsId <= 0)
sbSql.AppendFormat(" Type={0}", GoodsClassify.TYPE);
else
sbSql.AppendFormat(" Id={0} AND Type={1}", Para.GoodsId, GoodsClassify.TYPE);
if (!string.IsNullOrWhiteSpace(Para.GoodsName))
sbSql.AppendFormat(" AND Name LIKE '%{0}%'", Para.GoodsName);
var list = content.ExcuteList<VGoodsModel>(sbSql.ToString(), CommandType.Text, null);
dataList.AddRange(list);
sbSqlAll.AppendLine(string.Format("{0}, 执行SQL:{1}", o, sbSql.ToString()));
});
Weimob.Log.FloderLogger.CreateInstance("GetGoodsPagingByGoodsName").SingleLineDebug(sbSqlAll.ToString());
}

使用 Parallel LINQ 进行数据分页的更多相关文章

  1. asp.net LINQ实现数据分页

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. linq 大数据 sql 查询及分页优化

    前提: 需要nuget   PredicateLib   0.0.5: SqlServer  2008R2 (建议安装 64 位): .net 4.5 或以上: 当前电脑配置: I7 4核  3.6G ...

  3. .Net多线程编程—Parallel LINQ、线程池

    Parallel LINQ 1 System.Linq.ParallelEnumerable 重要方法概览: 1)public static ParallelQuery<TSource> ...

  4. ASP.NET Core Web API 如何 数据分页 以及遇到'OFFSET' 附近有语法错误

    最近领导叫我做的一个B/S端的小项目,突发奇想想用到core web api 今天写数据分页的时候,就想着 用linq分页查询吧,直接上代码 _context.Skip(Size * (PageNum ...

  5. mysq大数据分页

    mysql limit大数据量分页优化方法 Mysql的优化是非常重要的.其他最常用也最需要优化的就是limit.Mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急 ...

  6. Sql Server 数据分页

    http://www.cnblogs.com/qqlin/archive/2012/11/01/2745161.html 1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了 ...

  7. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  8. 知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页

    回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归 ...

  9. salesforce 零基础开发入门学习(八)数据分页简单制作

    本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于 ...

随机推荐

  1. [日常工作]vCenter下虚拟机设置与宿主机时间同步的方法

    1. ESXi 能够实现CPU超售 同事开启多与CPU个数的虚拟机 不通的虚拟机采用了时间分片的处理, 所以有时候虚拟机内的时间可能会比宿主机的时间过的更慢, 越来越久之后虚拟机的时间就会比较离谱了. ...

  2. Golang的位运算操作符的使用

    & 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 感觉位运算操作符虽然在平时用得并不多,但是在 ...

  3. protocol buffer开发指南(官方)

    欢迎来到protocol buffer的开发者指南文档,一种语言无关.平台无关.扩展性好的用于通信协议.数据存储的结构化数据序列化方法. 本文档是面向计划将protocol buffer使用的到自己的 ...

  4. PHP常用工具类积累

    第一 请求第三方接口的工具类 例如,封装了get和post请求方法的工具类,代码如下: <?php class HttpClient{ /** * HttpClient * @param arr ...

  5. delphi 导出到excel的第1种方法

    第一种方法delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):bo ...

  6. Gulp实现静态网页模块化的方法详解

    前言: 在做纯静态页面开发的过程中,难免会遇到一些的尴尬问题.比如:整套代码有50个页面,其中有40个页面顶部和底部模块相同.那么同样的两段代码我们复制了40遍(最难受的方法).然后,这个问题就这样解 ...

  7. C# 之抽象类和抽象方法

    概述:abstract 关键字  抽象类不能被实例化,抽象方法不能有方法体,抽象类中的所有抽象方法必须在子类中重写(override ),一个抽象类可以同时包含抽象方法和非抽象方法. abstract ...

  8. lvs逻辑卷详解

    管理磁盘空间对系统管理员来说是一件重要的日常工作.一旦磁盘空间耗尽就需要进行一系列耗时而又复杂的任务,以提升磁盘分区中可用的磁盘空间.它也需要系统离线才能处理.通常这种任务会涉及到安装一个新的硬盘.引 ...

  9. Minimum Cost POJ - 2516 (模板题 spfa最小费用最大流)

    题意: 人回家,一步一块钱,有x个人,y个房子,求能回家的最大人数且使之费用最小 解析: 就是....套模板,,,, 建图(⊙﹏⊙)...要仔细观察呐 对于人拆不拆都可以  都能过,,,,这里贴上拆开 ...

  10. hdu5521(Meeting)spfa 层次网络最短路

    题意:给出几个集合,每个集合中有Si个点 且任意两个点的距离为ti,现在要求两个人分别从1和n出发,问最短多长时间才能遇到,且给出这些可能的相遇点; 取两个人到达某点时所用时间大的值 然后取最小的   ...