这里有一张未知记录且数据容量很大的表,
如何能不用top和order by方法的情况下查询出最后N条记录来。
 

解决方案 »

  1.   

    如果没有自增列,且没有别的聚集索引,则可以用不带排序的select 语句获得最后加入的记录,如果有聚集索引,则无法直接知道最后添加的行是哪几行,因为,SQL里"行的顺序"只有在"以什么排序"时才有意义.
    只有一个办法,用Log explorer之类的软件去查询操作记录,看哪几行是最后添加进去的.
      

  2.   

    GUID本来没啥顺序可言,所以如果你要排序,恐怕要搞个自增ID列。
      

  3.   

    如果没自增ID的话  使用order  by  +top的方法会开小会很大
      

  4.   

    那么有自增ID,不用order  by  和top 怎么弄呢?
      

  5.   

    比如你的id从1到1000万,然后你要找最后10条,直接select * from tb where id between 9999990 and 10000000即可
      

  6.   

    有自增id也得用top,orderby吧
    假设有100条数据,id:1-100
    删了第92,98条数据,要找最后十条between 90 and 100是找不到的
      

  7.   

    要不要top要看需求。不一定非要用
      

  8.   


    价格ID自增字段
    alter table tablename
    add ID int identity(1,1)
    goDBCC CHECKIDENT(表的名字)
    可以查看到该表当前标识列值(也就是说最后一行数据的ID值)然后你再
    select * from tb where id between @a and 最大值如果给这个ID自增字段建有索引  那么速度很快了
      

  9.   

    如果创建了索引,可以从:
    SELECT rowcnt FROM sys.sysindexes  WHERE OBJECT_ID=OBJECT_ID('表名') AND indid=1为聚集索引,>1为非聚集索引,具体要看你创建什么索引
    找到某个表最大的行数,