这张表存放的是应用程序的报错信息,而且在插入的时候,是按照时间排序的
然后我想看下最近插入的几条记录 order by desc一下
然后发现查询了5分钟,报错,Tempdb把SSID的空间全部吃光了。。。
应该是为了order by subtime,需要把所有结果都扫描一遍的原因吧?
我的语句是select ErrorMessage,SubTime form Errors order by SubTime desc
然后就想问问
怎么样能快速的取得【倒序排列】的效果?
21 个解决方案
#1
select top 100 ErrorMessage,SubTime form Errors order by SubTime desc
#2
SubTime 字段加索引。
#3
如此大的數據量,硬件需要支持
表有沒有用到分區表
表有沒有用到分區表
#4
谢二楼
这个也要把表中所有数据都扫描一遍。。。才有top100
这个也要把表中所有数据都扫描一遍。。。才有top100
#5
回小F:
本身列上面没有索引,直接创建索引的话,会不会让表变得更大?
本身列上面没有索引,直接创建索引的话,会不会让表变得更大?
#6
回大版:
这张表没有分区,之前没想到这张表会如此巨大,直接放primary文件组中了。。。
这张表没有分区,之前没想到这张表会如此巨大,直接放primary文件组中了。。。
#7
再大也没你一天插入的数据大吧,一周一亿六千万...
我了个去,要是换成钱的话,我数数...
#8
一亿六千万行?还查什么?内存吃不消.
你可以考虑使用条件去查询.
例如:
select * from tb where ... order by ...
你可以考虑使用条件去查询.
例如:
select * from tb where ... order by ...
#9
用日期列作為分區+分DB+分服務器。過億的數據,硬件要求很高啊,最好在程序里處理新增到不同的服務器處理
#10
都是什麼數據,一周內過億,你看一下表的大小是?表過大分區分DB是一定的
#11
回大乌龟:主要是想看看是具体的报错信息是什么,我不知道表里面是什么内容,没法写条件。。。
有没有一个【类似指针】的东西,直接指向这张表的【末尾】,然后开始select呢?
有没有一个【类似指针】的东西,直接指向这张表的【末尾】,然后开始select呢?
#12
回大板:
这表是报错表,按照之前的经验来看,这表里插入的数据会很少,现在肯定是哪个地方报错了,而且是每时每秒都在报错,才有可能有这么大的插入数据量。。。
然后我就想找找里面的内容,看看是是哪里报错了
这表是报错表,按照之前的经验来看,这表里插入的数据会很少,现在肯定是哪个地方报错了,而且是每时每秒都在报错,才有可能有这么大的插入数据量。。。
然后我就想找找里面的内容,看看是是哪里报错了
#13
表的大小32G,哭了
#14
就是索引了,时间字段建索引
然后再select top 100 ... order by 时间 desc
不过机器吃不吃得消就只有你自己试了才知道了
然后再select top 100 ... order by 时间 desc
不过机器吃不吃得消就只有你自己试了才知道了
#15
#16
明白了,按照desc 在subtime上建立索引,
然后再Order by subtime desc就会直接利用这个索引了!!
然后再Order by subtime desc就会直接利用这个索引了!!
#17
你应该有个时间字段吧?可否考虑用时间字段来做条件?
如果不行,可把文件导出去,导成TXT文件,然后更改后缀为doc,打开这个word文档去里面看具体内容.
如果不行,可把文件导出去,导成TXT文件,然后更改后缀为doc,打开这个word文档去里面看具体内容.
#18
怎么看表的大小32G的
#19
回大乌龟:
多谢,我去试试
多谢,我去试试
#20
在SMSS中右键点击那张表,属性,里面就有表大小
#21
各位,报错的结果查出来了,我都震惊了不敢相信:
【列名 'loginnameReg' 无效。】
。。。
来自于某个服务,以每0.017秒3次的频率往这表里面插入记录
。。。
。。。
。。。
【列名 'loginnameReg' 无效。】
。。。
来自于某个服务,以每0.017秒3次的频率往这表里面插入记录
。。。
。。。
。。。
#1
select top 100 ErrorMessage,SubTime form Errors order by SubTime desc
#2
SubTime 字段加索引。
#3
如此大的數據量,硬件需要支持
表有沒有用到分區表
表有沒有用到分區表
#4
谢二楼
这个也要把表中所有数据都扫描一遍。。。才有top100
这个也要把表中所有数据都扫描一遍。。。才有top100
#5
回小F:
本身列上面没有索引,直接创建索引的话,会不会让表变得更大?
本身列上面没有索引,直接创建索引的话,会不会让表变得更大?
#6
回大版:
这张表没有分区,之前没想到这张表会如此巨大,直接放primary文件组中了。。。
这张表没有分区,之前没想到这张表会如此巨大,直接放primary文件组中了。。。
#7
再大也没你一天插入的数据大吧,一周一亿六千万...
我了个去,要是换成钱的话,我数数...
#8
一亿六千万行?还查什么?内存吃不消.
你可以考虑使用条件去查询.
例如:
select * from tb where ... order by ...
你可以考虑使用条件去查询.
例如:
select * from tb where ... order by ...
#9
用日期列作為分區+分DB+分服務器。過億的數據,硬件要求很高啊,最好在程序里處理新增到不同的服務器處理
#10
都是什麼數據,一周內過億,你看一下表的大小是?表過大分區分DB是一定的
#11
回大乌龟:主要是想看看是具体的报错信息是什么,我不知道表里面是什么内容,没法写条件。。。
有没有一个【类似指针】的东西,直接指向这张表的【末尾】,然后开始select呢?
有没有一个【类似指针】的东西,直接指向这张表的【末尾】,然后开始select呢?
#12
回大板:
这表是报错表,按照之前的经验来看,这表里插入的数据会很少,现在肯定是哪个地方报错了,而且是每时每秒都在报错,才有可能有这么大的插入数据量。。。
然后我就想找找里面的内容,看看是是哪里报错了
这表是报错表,按照之前的经验来看,这表里插入的数据会很少,现在肯定是哪个地方报错了,而且是每时每秒都在报错,才有可能有这么大的插入数据量。。。
然后我就想找找里面的内容,看看是是哪里报错了
#13
表的大小32G,哭了
#14
就是索引了,时间字段建索引
然后再select top 100 ... order by 时间 desc
不过机器吃不吃得消就只有你自己试了才知道了
然后再select top 100 ... order by 时间 desc
不过机器吃不吃得消就只有你自己试了才知道了
#15
#16
明白了,按照desc 在subtime上建立索引,
然后再Order by subtime desc就会直接利用这个索引了!!
然后再Order by subtime desc就会直接利用这个索引了!!
#17
你应该有个时间字段吧?可否考虑用时间字段来做条件?
如果不行,可把文件导出去,导成TXT文件,然后更改后缀为doc,打开这个word文档去里面看具体内容.
如果不行,可把文件导出去,导成TXT文件,然后更改后缀为doc,打开这个word文档去里面看具体内容.
#18
怎么看表的大小32G的
#19
回大乌龟:
多谢,我去试试
多谢,我去试试
#20
在SMSS中右键点击那张表,属性,里面就有表大小
#21
各位,报错的结果查出来了,我都震惊了不敢相信:
【列名 'loginnameReg' 无效。】
。。。
来自于某个服务,以每0.017秒3次的频率往这表里面插入记录
。。。
。。。
。。。
【列名 'loginnameReg' 无效。】
。。。
来自于某个服务,以每0.017秒3次的频率往这表里面插入记录
。。。
。。。
。。。