可能没关系,但是如果是我,我将使用一张桌子。这是我的理由:
首先,我们必须在此表上假设良好的索引,这将使查找快速。使用适当的索引,如果要查询排队的任务,“完成”任务的数量是10还是100亿都无关紧要,DBMS只会查看排队的任务。
其次,随着任务从“排队”移动到“完成”,您将要更新其状态。这需要DBMS对索引进行一些重组,但是没关系,他们已经高效地执行了30多年了。
如果将它们分成单独的表,则将记录从一个位置移动到另一位置的维护工作基本上将放在 而不是在DBMS索引重组代码中。哪些代码库经过了更好的测试且性能更高?:)
最后一个论点- 如果将它们全部放在一个大表中,则对这些任务的管理进行进一步的性能调整将成为DBMS配置问题,而不是软件开发问题。那是我书中的一大胜利。您可以采取各种疯狂的配置工作来提高任何DBMS的性能,包括垂直和水平分区。如果您通过软件中嵌入的某种方案分配数据的方式,那么这些事情就不会成为选择。
因此,最重要的是- 如果您使用2表方法,那么我认为它的性能将与您使用单表方法非常相似,一旦考虑到额外的工作,您的代码将需要执行一些工作来移动记录。如果从一个表中删除“打开”任务并将其粘贴到“完成”表中,请记住,DBMS仍将必须更新源表上的“打开”索引。因为可能不会有很大的性能差异,所以应该使用一个表的方法,因为它对您的工作较少,并且以后为您提供了更大的灵活性(通过配置和副软件来提高速度)