主从表聚集索引设计问题

lcw321321 lcw321321 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以进销存为例,存在订单主表 OrderMaster(BillNO,Billdate,creator,customerId....)
从表 Orderdetail(BillNo,....)

Billno varchar(20) 唯一。
现在的情况是 以BillNo 为主键为聚集索引。(每天增加的单1000-3000条左右。)
这样的优点对Join 链接从表有帮助。而且BillNo也是递增的也是不可更改的。符合聚集索引的条件
但是 "Billno 唯一" 这一点不符合聚集索引的条件,可是由于单据都是顺序存取,所以也基本满足可以将附近的数据都取到内存的原则,不知道这样理解对不?由于Billno 是按顺序增加,所以不会分散存到其它页去造成页撕裂,只会在末端新增页。那么填充因子是否可以设置成很大,如98以上。这样设置填充因子是否合理?

但是也考虑到这样的情况,用户查单,一般都是按日期条件查询,然后再在里面查找相应的Billno 。
再读取相应的明细。是否可以这样设计:以日期为聚集索引,然后以Billno 为非聚集索引。毕竟一旦用到主表,一般情况下都会用到从表 这样设计索引对JOIN连接是否有影响?

尽管用户经常需要查某一张单的明细。似乎以BillNo 为非聚集索引最好(唯一,一次性取的数量少)。
但是由于非聚集索引的页仅仅指向一个地址,而并非一个值。如果经常使用 单号来查数据的话。效能似乎并没有聚集索引效率高。不知道这样理解对不?
现在的疑惑,是用billDate 做聚集索引,还是BILLNO做聚集索引好?由于没有测试环境,所以无法模拟真实环境。希望大家给个意见
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
lcw321321
MS-SQL Server 34,876 成员 254,635 内容