最近一周数据库mdf文件疯长,一看居然是某张表中在这一周之内插入了一亿六千万行数据
这张表存放的是应用程序的报错信息,而且在插入的时候,是按照时间排序的然后我想看下最近插入的几条记录 order by desc一下
然后发现查询了5分钟,报错,Tempdb把SSID的空间全部吃光了
应该是为了order by subtime,需要把所有结果都扫描一遍的原因吧?我的语句是select ErrorMessage,SubTime form Errors order by SubTime desc
然后就想问问怎么样能快速的取得【倒序排列】的效果?

解决方案 »

  1.   


    select top 100 ErrorMessage,SubTime form Errors order by SubTime desc
      

  2.   

    谢二楼 
    这个也要把表中所有数据都扫描一遍才有top100
      

  3.   

    回大版:
    这张表没有分区,之前没想到这张表会如此巨大,直接放primary文件组中了
      

  4.   

    一亿六千万行?还查什么?内存吃不消.你可以考虑使用条件去查询.例如:select * from tb where ... order by ...
      

  5.   

    回大乌龟:主要是想看看是具体的报错信息是什么,我不知道表里面是什么内容,没法写条件
    有没有一个【类似指针】的东西,直接指向这张表的【末尾】,然后开始select呢?
      

  6.   

    就是索引了,时间字段建索引
    然后再select top 100 ... order by 时间 desc
    不过机器吃不吃得消就只有你自己试了才知道了
      

  7.   

    明白了,按照desc 在subtime上建立索引,
    然后再Order by subtime desc就会直接利用这个索引了!!
      

  8.   

    你应该有个时间字段吧?可否考虑用时间字段来做条件?如果不行,可把文件导出去,导成TXT文件,然后更改后缀为doc,打开这个word文档去里面看具体内容.
      

  9.   

    在SMSS中右键点击那张表,属性,里面就有表大小
      

  10.   

    各位,报错的结果查出来了,我都震惊了不敢相信:
    【列名 'loginnameReg' 无效。】

    来自于某个服务,以每0.017秒3次的频率往这表里面插入记录