我将拥有一个包含数百万个条目的数据库表,例如,一个在线商店的产品。如果一个没有货,我想以某种方式标记它,并且想从任何findAll()
sql提取中排除它。
因此,我虽然使用以下选项之一:
select * from products where availcount > 0
boolean available = 'true'
字段,如果缺货,则将其设置为false,然后查询将是...where available = 'true'
问题:这会有所不同吗?是否有理由应首选这些选项之一?
我会坚持库存水平(int availcount
)。位字段通常很难索引,除非数据中存在较大的偏斜,以致缺货的数量大约为1%或更少(并且由于您可能只搜索有库存的产品,标志上的索引将不被使用)。
由于无论如何您似乎已经存储了实际的库存水平,因此不存储available
库存指示器将使您避免试图使两列保持同步。
最后,许多RDBMS允许您添加COMPUTED列(如果失败,则将available
指示符添加到VIEW),这将允许您available
从实际的逻辑推导指示符availcount
,而没有任何存储开销。
编辑
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句