寻求sql高手查询表中最后的100条记录?

jacky_guest 2009-06-03 03:06:57
不使用select top 100 * from table order by id desc 当表的数据量比较大时,上10万条时,使用这条语句查询速度就很慢。。
还没有其他的方法??
寻求sql高手
...全文
3008 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tomzzu 2009-06-04
  • 打赏
  • 举报
回复
加索引解决不了问题
那个排序可是全表扫描呀, 数据量大简直是灾难
ID是递增的话,可能参考如下, 如果ID加上索引, 当然非常快


select z.*
from table as z,
(select (max(id) - 100) as BegID
from table
) as m
where z.ID >= m.BegID
order by z.id desc

aimee_99 2009-06-04
  • 打赏
  • 举报
回复
mark
jacky_guest 2009-06-04
  • 打赏
  • 举报
回复
我的初衷是不加索引
原因是这个表将来会插入数据,这样会影响效率
JonasFeng 2009-06-03
  • 打赏
  • 举报
回复
楼主的ID 没加索引
而且就算是不加的话,
也不会很慢。

楼主可以仔细看下执行计划,那块最消耗时间。
qiweihero 2009-06-03
  • 打赏
  • 举报
回复
select top 100 * from table where id>(select MAX(id)-100 from table)
哎,思路就是这样 貌似还是要排序
  • 打赏
  • 举报
回复
10w条没有索引页不会太慢的吧.
yfsky_2008 2009-06-03
  • 打赏
  • 举报
回复
1.加索引
2.select * from table where id > (select max(id)-100 from table )
cgjuny 2009-06-03
  • 打赏
  • 举报
回复
加索引,不过先看看你机器是不是死锁了,10w....貌似不需要
--小F-- 2009-06-03
  • 打赏
  • 举报
回复
加索引是正确的做法 不过我觉得10W条数据应该不需要这么麻烦
aisini_an 2009-06-03
  • 打赏
  • 举报
回复
学习了...
wguchao 2009-06-03
  • 打赏
  • 举报
回复
给order by的字段加index,然后用top应该是最快的方法了吧。
SQL77 2009-06-03
  • 打赏
  • 举报
回复
在ORDER BY 字段 上加索引!!!
jia_guijun 2009-06-03
  • 打赏
  • 举报
回复
create index ix_tb_id on tb(id desc)   --为ID创建索引
htl258_Tony 2009-06-03
  • 打赏
  • 举报
回复
上十万条数据不算大,ID有索引就不会慢了.
ks_reny 2009-06-03
  • 打赏
  • 举报
回复

給id加上索引試試.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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