首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 黑客知识 → 网管专题 → 文章内容

如何让你的SQL运行得更快--SQL,运行

作者:佚名  来源:网上收集  发布时间:2006-5-12 0:53:53
   人们在使用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上有大量的重复值,在非群集索引下,数据在物理上随机存放在数据页上,在范围查找时,必须执行一次表扫描才能找到这一范围内的全部行。


     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秒)

     分析:

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


     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,且引用的所有列都包含在组合索引中,形成了索引覆盖,所以它的速度是非常快的。

[1] [2] [3]  下一页

[] [返回上一页] [打 印]
  • 上一篇文章:命令行下配置XP2防火墙--命令行,配置,XP2,防火墙
  • 下一篇文章:IE mhtml redirection漏洞利用方法--IE,mhtml,redirection,漏洞

  • 相关文章:
  • 如何让你的SQL运行得更快--SQL,运行
  • 如何让你增加“有意义”的网站访问量?--如何让你增...
  • 如何让你的网站在搜索结果名中名列前茅--网站,搜索,...
  • 如何让你变成ASP木马高手--ASP,木马,高手
  • 如何让你的程序安全通过windows防火墙--程序,安全通...
  • 如何让你的SQL运行得更快
  • 如何让你的ASP运行于非Windows平台
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号