日期:2014-05-17  浏览次数:20451 次

千万级表数据优化
最近由于项目中某些表 中的数据增速比较快,已经达到千万级,查询效率很慢,webservice经常超时,有没有什么比较好的优化查询方法?
查询 sqlserver

------解决方案--------------------
http://blog.csdn.net/bohemianlife/article/details/8456522  可以参考看看,表区分技术
------解决方案--------------------
重建索引下,估计效率会提高很多。如下:
1.重建数据库索引

SqlServer2005 重建索引 
随着数据的数据量的急剧增加,数据库的性能也会明显的有些缓慢
这个时候你可以考虑下重建索引或是重新组织索引了。
 通过
Sql代码  
1.DBCC SHOWCONTIG('表名')  
DBCC SHOWCONTIG('表名') 可以查看当前表的索引碎片情况,出来的结果大概如下:
  
DBCC SHOWCONTIG 正在扫描 'tblWFProcessRelatedDataInstanceHistory' 表...

表: 'tblWFProcessRelatedDataInstanceHistory' (933630419);索引 ID: 1,数据库 ID: 8

已执行 TABLE 级别的扫描。

- 扫描页数................................: 727

- 扫描区数..............................: 96

- 区切换次数..............................: 95

- 每个区的平均页数........................: 7.6

- 扫描密度 [最佳计数:实际计数].......: 94.79% [91:96]

- 逻辑扫描碎片 ..................: 3.16%

- 区扫描碎片 ..................: 76.04%

- 每页的平均可用字节数........................: 143.6

- 平均页密度(满).....................: 98.23%

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

其中有些很重要的指标,如扫描密度、扫描碎片等。

最佳计数与实际计数相当时说明索引是比较好的,如相差太多,就必须可以重新建或组织索引。

重建索引命令:

指定表名

Sql代码  
1.DBCC DBREINDEX (表名, '',  70)   
DBCC DBREINDEX (表名, '',  70)  

 对全库

Sql代码  
1.exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'