以下的贴子怎么没了?因为我有重大发现!

周围走 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



...全文
14 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧