现在数据库中有几个表,每个表中的记录会有几十万到几百万条,表之间的相互关联也比较多。
FileInfos(Id,DirId,CreateTime,....)
Id使用guid来生成的,且会作为其他几个比较大的表的外键。
DirID数量不多,会有几十到几百个,也会做为其他表的外键。
CreateTime会用来实现分区视图,打算用createtime顺序来实现数据存储。查询时,会经常用来DirId,
且该表的插入操作比较频繁,
请问该如何建立聚集和非聚集索引?
谢谢

解决方案 »

  1.   

    用ID,CreateTime做联合主键在CreateTime上建立聚集索引在DirID上建立非聚集索引另,GUID比较占用磁盘空间.
      

  2.   

    to puremoon2008:
    采用guid生成Id列主要是为了复制和数据迁移功能用的,
    不然用自动生成的id数据迁移、合并比较麻烦。现在打算用createtime做聚集索引,
    数据查询时,用dirid比较多,且会返回大批量结果集,
    如果在上面建非聚集索引,是否不大合适
      

  3.   

    在CreateTime上建立聚集索引 在DirID上建立非聚集索引 
      

  4.   

    CreateTime是否可以做成非聚集索引?
      

  5.   

    仍未明白!还有方案么?
    dirid相当于目录,个数不是很多,最多也就几千个,一般几十个就不错了,
    一个dirid可能对应几万个文件,这种情况下建立非聚集索引或聚集索引都不合适吧??
      

  6.   

    CreateTime会用来实现分区视图,打算用createtime顺序来实现数据存储
    -------
    依照时间段来做分区视图 感觉没有必需做聚集索引的必要DirID数量不多,会有几十到几百个
    -------
    表数据量不小 插入比较频繁 对Guid列做聚集索引很占用空间 对DirID做感觉也没必要 而且都影响插入操作的性能