文章表结构如下table file{
id bigint [PRIMARY] not null,
ttile ntxt, 约束1 default''
content ntxt, 约束2 default''
pubtime datetime
}
其中id是聚集索引,非自增。目前表中记录是1千万,但是id值是跳跃的从100000000(1亿)开始到100000000000(千亿),中间并不连续,可能好几十亿是没有的。(别问为什么,历史)现在每次抽取1000条数据 select top 1000 id,title,content,pubtime from file where id>=100000000 and id <=100000000000 order by id
其中id>=100000000这个值每次都取上次1000条的Max(id)
每次抽取的时间平均都在30s以上,机器是双核2.6,2G内存的服务器,请问各位有何好的解决办法?
id bigint [PRIMARY] not null,
ttile ntxt, 约束1 default''
content ntxt, 约束2 default''
pubtime datetime
}
其中id是聚集索引,非自增。目前表中记录是1千万,但是id值是跳跃的从100000000(1亿)开始到100000000000(千亿),中间并不连续,可能好几十亿是没有的。(别问为什么,历史)现在每次抽取1000条数据 select top 1000 id,title,content,pubtime from file where id>=100000000 and id <=100000000000 order by id
其中id>=100000000这个值每次都取上次1000条的Max(id)
每次抽取的时间平均都在30s以上,机器是双核2.6,2G内存的服务器,请问各位有何好的解决办法?
解决方案 »
- 数据库如果用windows认证,那么哪个用户有登录sql server的权限呀?不可能随便一个windows用户都能登录sql server吧?
- 能不能从存储过程的结果集中再次查询?
- 关于系统存储过程"sp_procedure_params_rowset"的一点疑问!
- 由于最小日志空间要求,无法收缩日志文件
- 由于数据移动,未能继续以 NOLOCK 方式扫描。这个错误怎样解决?
- sql server中附加Access数据库文件遇到问题在线求解!!
- 求一查询语句, 多表返回混合DATASET(有图例)
- 原来有个公告给出一个可以重建csdn上丢失页面的链接,现在怎么找不到了?
- 有关数据库恢复的问题
- 求救啊
- 求2005标准版64位下载地址
- MS-SQL2000 查询当前的链接服务器
第二:这个聚集索引有问题。
可以考虑用pubtime+ID作为组合键,作非聚集索引。
参考:
http://www.cnblogs.com/downmoon/archive/2010/02/04/1663956.html
第三:itle,content都是ntxt,会影响速度
一般不会这么慢的...主要是看你的索引的情况,可能需要整理了...
lz可以考虑用下索引视图!把这部分top 1000 id的数据固化。
select top 1000 id,pubtime from file where id>=100000000 and id <=100000000000 order by id
多少时间?
content ntxt, 约束2 default''
这两个ntext,一般情况下长度多少?
- 扫描密度 [最佳计数:实际计数].......: 19.53% [66394:339915]
- 逻辑扫描碎片 ..................: 81.97%
- 区扫描碎片 ..................: 74.21%不知道是不是碎片太多的问题?有何良策可以快速重建索引?我尝试copy表30分钟only copy 4w条数据,只好放弃。
在表结构不能调整,机器配置不能增加,业务不能几小时中断的情况下。
如果是这个原因
只能等下次升级时解决了。