用TOP来加速SQL

简介:
用TOP来加速SQL
经常看到SQL里面写着Select * from Table where ID = 123,而同时又经常有人报怨系统的性能很差:查一条记录当有海量数据的时候,要用好几分钟。而事实上在程序员在开发的时候,多写几个字母就可以让你的SQL执行得快一些:把刚才的那句改成:Select Top 1 * from where ID = 123 Table再看效果,速度有质的提高。
让我们来看一组数据:当数据表里面的记录只有几十条的时候:没有使用TOP时,执行1000次的查询用时要用1032ms;同时如果合用了TOP来查询只需要922ms就可以完成这1000次的查询了。也许你可以认为性能提高不明显。让我们再看一组数据吧,当数据库里面有三十几万条记录的时候,执行一次的查询(这时候查询比较耗时了,所以作一次就够显示时间了)没有使用TOP的时候要耗时7515ms,而使用了TOP后,只用了201ms就完成了这一次查询。测试过程中的执行代码如下:
var
I: Integer;
nRunCount: Cardinal;
nStartTime: Cardinal;
nRunTime: Cardinal;
begin
nRunCount := StrToInt(edtRunCount.Text);
nStartTime := GetTickCount;
for I := 1 to nRunCount do
with ADOQuery1 do
begin
Close;
SQL.Text := edtSQL.Text;
ExecSQL;
end;
nRunTime := GetTickCount - nStartTime;
ShowMessage(Format('运行了:%d ms', [nRunTime]));

分析:之所以存在这么大的差异,很可能是由于当数据库查询到一条记录后,如果没有使用TOP1的时候,它还会接着往下查找,所以要多使用时间,而如果使用了TOP1这时候就不接着往下查找。

本文转自分瓜博客51CTO博客,原文链接http://blog.51cto.com/aiqing/895如需转载请自行联系原作者


aiqing

相关文章
|
5月前
|
SQL Oracle 关系型数据库
|
2月前
|
SQL 数据挖掘 大数据
如何在 SQL Server 中使用 `SELECT TOP`
【8月更文挑战第10天】
127 7
如何在 SQL Server 中使用 `SELECT TOP`
|
3月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第12天】SQL SELECT TOP 子句。
41 14
|
3月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第13天】SQL SELECT TOP 子句。
26 5
|
4月前
|
SQL 关系型数据库 MySQL
SQL SELECT TOP, LIMIT, ROWNUM 子句
SQL SELECT TOP, LIMIT, ROWNUM 子句
38 2
SQL SELECT TOP, LIMIT, ROWNUM 子句
|
4月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 详解
SQL SELECT TOP 详解
|
4月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP, LIMIT, ROWNUM 子句
SQL SELECT TOP, LIMIT, ROWNUM 子句
51 4
|
5月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP, LIMIT, ROWNUM 子句
SQL SELECT TOP, LIMIT, ROWNUM 子句
40 3
|
5月前
|
SQL 关系型数据库 Java
实时计算 Flink版操作报错之在阿里云DataHub平台上执行SQL查询GitHub新增star仓库Top 3时不显示结果,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL Oracle 关系型数据库
12SQL - TOP关键字
12SQL - TOP关键字
37 0