选择这个字段作聚集索引合理吗?
sql2000中的一个表,保存的是几十个单位的人员名单,字段有id、单位、姓名、职务等等,数据量预计会超过百万记录。因此,想用“单位”字段作聚集索引,另用“id”等两三个常用在where中的字段再建一非聚集索引。这样设计索引是否合理?心中没底,麻烦各位帮出主意。谢谢!
------解决方案--------------------单位+工号应该是唯一的,就用它来做唯一聚集索引吧
------解决方案--------------------
标识字段可以作为聚集索引,我到是建议你用标识字段。
然后,在建立几个非聚集索引,以单位字段开头,来加快搜索的速度
------解决方案--------------------
1、如果你的表,有频繁的增删改,那么可以进行索引的重建。
2、什么时候重建,这个得看具体情况,如果碎片率 超过30%,那么可以考虑在系统空闲的时间,特别是每天的维护期内,进行索引重建:
use master
go
select
DB_NAME(d.database_id),
OBJECT_NAME(d.object_id),
i.name, --索引名称
d.index_type_desc,
d.alloc_unit_type_desc,
d.index_depth, --索引的深度
d.index_level, --索引当前级别
--索引的逻辑碎片百分比
d.avg_fragmentation_in_percent
from sys.dm_db_index_physical_stats
(db_id('数据库名称'), --数据库id
null, --对象id:数据库名称.架构.对象名称
null, --索引id
null, --分区号
'' --模式
)d
inner join sys.indexes i
on d.object_id = i.object_id
and d.index_id = i.index_id
3、如果你的系统,插入操作比较多的话,可以考虑用填充因子,也就是预留一部分空闲空间,然后大量插入的时候,就不用经常的进行页的分裂,那么效率就提高了。
不过,一段时间后,页还是会被填满,这个时候,通过重建索引,那么可以重排数据,然后再次给每个数据页保留一定的空闲空间