各位好,现在遇到问题如下:
表结构,
CREATE TABLE [dbo].[FS_CHIP_INFO](
[SERIAL_NO] [varchar](100) NOT NULL PRIMARY KEY,
[LOT_NO] [varchar](50) NOT NULL,
[SCANTIME] [datetime] NULL,
[SERIAL_BL] [nvarchar](100) NULL,
[SERIAL_31] [varchar](50) NULL
)
存储的内容如下,
SERIAL_NO LOT_NO SCANTIME SERIAL_BL SERIAL_31
########1 ***-@@@@1 AAAAAA 2014-12-26 06:48:36.330 ########1 ***-@@@@1
########2 ***-@@@@2 AAAAAA 2015-01-02 19:11:12.877 ########2 ***-@@@@2
########3 ***-@@@@3 AAAAAA 2014-12-26 05:06:26.720 ########3 ***-@@@@3
LOT_NO AAAAAA 扫描了流水号三个SERIAL_NO, SERIAL_31的内容是SERIAL_NO 的" "后的内容,
系统经常需要通过LOT_NO 来查询数据,经常需要判断SERIAL_NO是否重复,判断SERIAL_31是否重复,
目前我分别给LOT_NO,SERIAL_31建立了索引,SERIAL_NO 主键默认聚集索引.
由于数据量很大,目前大概有3千万条数据, 数据空间是13G,索引空间有84G,我服务器的硬盘已经快没空间了.
接下来我应该如何解决这个问题.
谢谢各位!
------解决思路----------------------
SELECT *
FROM sys.dm_db_index_physical_stats( DB_ID(), OBJECT_ID('tablename'), NULL, NULL, 'LIMITED')
看看avg_fragmentation_in_percent 列的值,如果该值过大可以考虑重建索引。
另外聚集索引SERIAL_NO的值的插入是随机的还是有序的,如果是随机的话可以考虑在一个有序插入的列上建立聚集索引
------解决思路----------------------
1、重建聚集索引。
2、检查是否有不必要的非聚集索引,把它们删掉。
3、对于表的数据类型,如果没有必要存储多语言,可以不用n开头的数据类型。