1. 实验环境

     R910服务器, 16G内存

SqlServer 2012   64bit

MariaDB 10.0.3   64bit  (InnoDB)

2. 实验表情况

rtlBill.BillNo 为主键, rtlBill.BillDate 上有索引;

rtlDetail.BillNo 上有索引;

3. 实验步骤

(1)重启Sqlserver2012

(2)执行下面的分页语句

SELECT BillDate, SUM([QTY]) PosInQty
FROM RtlDetail A,RtlBill B
WHERE A.billno = B.billno  AND BillDate>='2009-09-25 00:00:00' AND BillDate<='2012-09-25 23:59:59'
GROUP BY BillDate
ORDER BY BillDate
Rows Only;

(3)重启MariaDB

(4)执行下面的分页语句

SELECT BillDate, sum(QTY) AS PosInQty
FROM RtlDetail A,RtlBill B
WHERE A.billno = B.billno  AND BillDate>='2009-09-25 00:00:00' AND BillDate<='2012-09-25 23:59:59'
GROUP BY BillDate
Order by BillDate
LIMIT 10,20;

4. 实验结果

同样是获取第 11 ~ 30 条记录

Server2012耗时:s

MariaDB耗时:       s

这个差别还是挺震撼的,是什么导致了二者的巨大差距?

下面来看看执行前后二者的IO对比。

5. 分析

(1)从下图中可以看出,为了获取分页数据,MariaDB读取了 52M 数据

(2)为了获取相同的数据,SQLServer2012,读取了 848M 数据

(3)二者的差距,就在分页数据的读取策略上。Sqlerver2012为了读取分页子集,几乎把整个表都放入了内存。不得不说,这块儿优化的空间很大。。。

为什么SQLServer在获取分页数据源时,不能像MySQL哪样只取所需呢?

有没有办法优化?

请听下回分解《SQLServer2012 分页语句执行分析》

各位看官,欢迎大家拍砖啊,有批评才有进步,谢谢。

SQLServer2012 和 MariaDB 10.0.3 分页效率的对比的更多相关文章

  1. MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建

    最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133 ...

  2. MariaDB——(二) MariaDB 10.0.15 日志文件—undo 日志

          日志的记录和维护是数据库中相当重要的内容,写这篇文章和后面几篇文章作为学习官网文档的笔记.MariaDB数据库日志可分为二进制日志.查询日志.错误日志.myISAM表日志.relay日志和 ...

  3. [mysql] MariaDB 10.0.10 GTID复制

    一:概念理解:    1.TID:Transaction ID,即Mysql服务器的事务ID号. 2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事 ...

  4. Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  5. CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  6. centos6.5环境使用RPM包离线安装MariaDB 10.0.20

    1. 进入MariaDB官网下载MariaDB需要的RPM包 2. 使用下载软件下载所需要的RPM包, 总共4个, 并上传到CentOS主机指定目录. MariaDB-10.0.20-centos6- ...

  7. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装

    1.配置yum源: 在MariaDB官网提供了yum源在线生成器,选择合适的系统和版本后,会生成所需的repo文件内容: 在/etc/yum.repos.d/目录下新建一个MariaDB.repo文件 ...

  8. Linux 源码安装MariaDB 10.0.16

    cmake软件   tar -zxvf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./bootstrap make && make install     依 ...

  9. MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)

    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...

随机推荐

  1. HTTP缓存缓存机制

    http协议无状态,所以缓存设定从两方面考虑.客户端浏览器和服务器端. 浏览器端实现过期机制. 服务器端实现验证机制. 缓存机制. 为了减轻服务器负担,也减少网络传输数量.http1.0定义了Expi ...

  2. Python中字符串切片操作

    一:取字符串中第几个字符 print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符   二: ...

  3. 在非MVC环境下使用 Razor引擎

    Razor引擎下载地址: http://github.com/Antaris/RazorEngine 解析Model: string template = "Hello @Model.Nam ...

  4. Delphi XE6 通过JavaScript API调用百度地图

    参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...

  5. Delphi实现全局鼠标钩子

    其中涉及到的一些API,网上均能查到详细的解释,这里不再熬述.源码下载 因为是全局钩子,所以要用dll注入.用到的鼠标消息结构如下: PMouseHookStruct = ^TMouseHookStr ...

  6. Matlab.NET混编技巧之——找出Matlab内置函数

    原文 http://www.cnblogs.com/asxinyu/p/3295309.html Matlab与.NET的混合编程,掌握了基本过程,加上一定的开发经验和算法基础,肯 定不难.反之,有时 ...

  7. 调用底层的viewController--返回底层

    //返回底层viewController的方法-- - (UIViewController*)GetViewController:(UIView*)uView { for (UIView* next ...

  8. SMO要点总结

    SMO要点总结: SMO使用坐标上升的方法,求解SVM的最优解.和原始坐标上升方法的不同点在于: 1.       由于SVM的限制条件 ,所以不能只使用一个坐标,改为更新两个 2.       采用 ...

  9. [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found

    google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展.可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了.之前导4.0 ...

  10. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)

    解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...