怎样使你的SQL运行得更加灵活和高效

菱纱ai天河

菱纱ai天河

2016-01-29 15:56

怎样使你的SQL运行得更加灵活和高效,怎样使你的SQL运行得更加灵活和高效

人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三个方面分别进行总结:

为了更直观地说明问题,所有实例中的SQL运行时间均经过测试,不超过1秒的均表示为(< 1秒)。

测试环境

主机:HP LH II

主频:330MHZ

内存:128兆

操作系统:Operserver5.0.4

数据库:Sybase11.0.3

一、不合理的索引设计

例:表record有620000行,试看在不同的索引下,下面几个 SQL的运行情况:

1.在date上建有一非个群集索引

select count(*) from record where date '19991201' and date < '19991214'and amount 2000 (25秒)select date,sum(amount) from record group by date(55秒)select count(*) from record where date '19990901' and place in ('BJ','SH') (27秒)

分析:

date上有大量的重复值,在非群集索引下,数据在物理上随机存放在数据页上,在范围查找时,必须执行一次表扫描才能找到这一范围内的全部行。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

2.在date上的一个群集索引

select count(*) from record where date '19991201' and date < '19991214' and amount 2000 (14秒)select date,sum(amount) from record group by date(28秒)select count(*) from record where date '19990901' and place in ('BJ','SH')(14秒)

分析:

在群集索引下,数据在物理上按顺序在数据页上,重复值也排列在一起,因而在范围查找时,可以先找到这个范围的起末点,且只在这个范围内扫描数据页,避免了大范围扫描,提高了查询速度。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

3.在place,date,amount上的组合索引

select count(*) from record where date '19991201' and date < '19991214' and amount 2000 (26秒)select date,sum(amount) from record group by date(27秒)select count(*) from record where date '19990901' and place in ('BJ, 'SH')(< 1秒)

分析:

这是一个不很合理的组合索引,因为它的前导列是place,第一和第二条SQL没有引用place,因此也没有利用上索引;第三个SQL使用了place,且引用的所有列都包含在组合索引中,形成了索引覆盖,所以它的速度是非常快的。

4.在date,place,amount上的组合索引

select count(*) from record where date '19991201' and date < '19991214' and amount >      
展开更多 50%)
分享

猜你喜欢

怎样使你的SQL运行得更加灵活和高效

SQLServer
怎样使你的SQL运行得更加灵活和高效

如何让你的SQL运行得更快

SQLServer
如何让你的SQL运行得更快

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使你的机器运行ASP?

ASP
如何使你的机器运行ASP?

简析怎样使皮肤更加美白

美容护肤 护肤
简析怎样使皮肤更加美白

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

走出误区 让你的CSS书写更加高效

Web开发
走出误区 让你的CSS书写更加高效

怎样使你的牙齿美白

电脑网络
怎样使你的牙齿美白

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

安装SQL Server 2005实例环境图解

安装SQL Server 2005实例环境图解

《恶魔三人组》网战模式系统介绍及玩法解析

《恶魔三人组》网战模式系统介绍及玩法解析
下拉加载更多内容 ↓