以下的贴子怎么没了?因为我有重大发现!
周围走 2002-12-27 07:25:09
主 题: 以下SQL语句为什么执行很慢
作 者: mingleiz (mingleiz)
等 级:
信 誉 值: 100
所属论坛: MS-SQL Server 数据库开发
问题点数: 100
回复次数: 23
发表时间: 2002-12-26 10:14:52
我写了以下SQL语句
select * from cstest where
base_id in
(select top 10 base_id from cstest where base_id in
(select top 60000 base_id from cstest order by base_id asc)
order by base_id desc)
order by base_id asc
base_id 是cstest表中的关键字索引字段
以上SQL执行中有如下问题:
当TOP 60000的值是TOP 50000以下时执行时间不到一秒,
而TOP 60000以上则执行时间5分钟都不能结束。
to : CCEO() 你的方法还是不够效率看,我的:
经过实验,我的最快.我不明白,为什么这么多人喜欢用IN子查询?被书本感染的?我见过好多书上的例子都喜欢用IN子查询,大多数被我用连接来代替,效率当然越少IN子查询就越高的!
环境:
PIII866 512M
win2000
sql server2000企业版
table name :t1
CLUSTERED PRIMARY KEY :id1
行:1000000,一百万行
耗时:1秒
--建表,索引
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T1]') and
OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T1]
GO
CREATE TABLE [dbo].[T1] (
[id1] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL ,
[data] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
--查询
SELECT *
FROM T1 INNER JOIN
(SELECT TOP 10 id1
FROM t1
WHERE id1 IN
(SELECT TOP 100000 id1
FROM t1
ORDER BY id1 ASC)
ORDER BY id1 DESC) a ON T1.id1 = a.id1
ORDER BY 1