我有三种情况,我不知道每种情况的解决方案是什么,但都是关于布尔属性
我有一个链接表,每个链接都有属性来确定是否访问,破坏或过滤,每个链接的值必须更新一次(除了极少数情况下重置所有)。
上面相同的链接有一个不断更新的访问属性,但在一个行数超过100万的表中,最多只有10,000或20,000,这将是真的。
我有一个包含页面和一个属性的表来指示是否每个都被处理过。最后(处理后),所有行都必须为true。
我想知道每种情况下哪种解决方案更好。
我认为那是:第一种情况中的属性,第二种情况下的表格,而第三种情况下我不知道。
欢迎另一种解决方案(如索引,也许)。
重要提示:两个表(页面和链接)都可以有超过一百万行。
答案 0 :(得分:1)
我会说第一种情况的列,第二种情况的表格和第三种情况的列。
根据数据库的规模,您的主要关注点可能是将经常更新的数据与其余数据分开。这就是为什么我建议第二种情况的表。但是,您可以明智地使用PostgreSQL的“HOT”功能,这意味着如果要更新的列未索引,更新不会导致表膨胀。但是,将流量远离大型桌子可能仍然是一个好主意,因为可能需要大量的搜索时间,保持autovacuum的快乐等等。如果你担心,我会测试一下。
答案 1 :(得分:0)
没有“最好”的方式。知道你的方法是否具有足够的性能的唯一方法就是去做并看看。在存在大量读取和少量更新的情况下,持续更新的一种方法将不会执行相同的操作。
我建议把所有东西放在桌子上,除非你有理由不去做那个旋转。
但最重要的是:什么是DBMS ?