主从表聚集索引设计问题
以进销存为例,存在订单主表 OrderMaster(BillNO,Billdate,creator,customerId....)
从表 Orderdetail(BillNo,....)
Billno varchar(20) 唯一。
现在的情况是 以BillNo 为主键为聚集索引。(每天增加的单1000-3000条左右。)
这样的优点对Join 链接从表有帮助。而且BillNo也是递增的也是不可更改的。符合聚集索引的条件
但是 "Billno 唯一" 这一点不符合聚集索引的条件,可是由于单据都是顺序存取,所以也基本满足可以将附近的数据都取到内存的原则,不知道这样理解对不?由于Billno 是按顺序增加,所以不会分散存到其它页去造成页撕裂,只会在末端新增页。那么填充因子是否可以设置成很大,如98以上。这样设置填充因子是否合理?
但是也考虑到这样的情况,用户查单,一般都是按日期条件查询,然后再在里面查找相应的Billno 。
再读取相应的明细。是否可以这样设计:以日期为聚集索引,然后以Billno 为非聚集索引。毕竟一旦用到主表,一般情况下都会用到从表 这样设计索引对JOIN连接是否有影响?
尽管用户经常需要查某一张单的明细。似乎以BillNo 为非聚集索引最好(唯一,一次性取的数量少)。
但是由于非聚集索引的页仅仅指向一个地址,而并非一个值。如果经常使用 单号来查数据的话。效能似乎并没有聚集索引效率高。不知道这样理解对不?
现在的疑惑,是用billDate 做聚集索引,还是BILLNO做聚集索引好?由于没有测试环境,所以无法模拟真实环境。希望大家给个意见