如何让你的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秒)
:)