KimhillZhang  

从网上看的:
第一种:

select * from (
Select row_number() over(order by NewsID asc) AS rownum, NewsID, NewsTitle,NewsText
From T_NewsTBL
) as a where  rownum >= 1 and rownum <= 5

第二种:
select T_NewsTBL.NewsID, T_NewsTBL.NewsTitle,T_NewsTBL.NewsText from
(
select NewsID,NewsTitle,row_number() over(order by NewsID asc) as rowId
from T_NewsTBL
) as keyTable
inner join T_NewsTBL on T_NewsTBL.NewsID = keyTable.NewsID
where rowId >= 10 and rowId <= 15;


在子查询中形成一个临时表keyTable,该表只保留T_NewsTBL中的标识,因为标识一般是索引,所以查询起来要快的多,
这个时候,keyTable这个临时表中保存的就是第10 到15条记录的标识了,然后再和T_NewsTBL来个inner join查询,
因为标识是索引,这个方法比上面一个方法要快的多

posted on 2010-05-17 17:03  KimhillZhang  阅读(302)  评论(0编辑  收藏  举报