select top 10 * from [table] where sid=1 order by id desc
selecttop10*from[table]wheresid=1orderbyiddescsid=1的有100万条记录,SID有索引,但查询前10条还是须要好几秒时间,...
select top 10 * from [table] where sid=1 order by id desc
sid=1的有100万条记录,SID有索引,但查询前10条还是须要好几秒时间,有没办法只查询SID=1的前10条就返回,而不须要where完100万条才返回前10条? 展开
sid=1的有100万条记录,SID有索引,但查询前10条还是须要好几秒时间,有没办法只查询SID=1的前10条就返回,而不须要where完100万条才返回前10条? 展开
1个回答
展开全部
问题出在order by上,如果不需要按照id排序的话,直接去掉order by就可以了,如果需要按照id排序的话,只需在id上建个唯一索引, 就不用order by了,问题同样可以解决。
如:create table s100
(
aaa varchar(10)
)
go
insert into s100 values ('1')
insert into s100 values ('3')
insert into s100 values ('2')
insert into s100 values ('4')
insert into s100 values ('0')
go
select * from s100
aaa
---
1
3
2
4
0
建立一个唯一索引:
create unique index idx_s100 on s100 (aaa)
go
再查:
select * from s100
go
结果为:
aaa
-------
0
1
2
3
4
如:create table s100
(
aaa varchar(10)
)
go
insert into s100 values ('1')
insert into s100 values ('3')
insert into s100 values ('2')
insert into s100 values ('4')
insert into s100 values ('0')
go
select * from s100
aaa
---
1
3
2
4
0
建立一个唯一索引:
create unique index idx_s100 on s100 (aaa)
go
再查:
select * from s100
go
结果为:
aaa
-------
0
1
2
3
4
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询