概述:我正在设计一个餐厅管理应用程序,并且有一个名为 Order 的实体,其中包含 Items。由于一家餐厅可以运营多年,拥有数千个已完成的“订单”,并且为了使我的应用程序的网络方面更容易并保持数据库快速运行,我想引入 ClosedOrder 的概念,它是一个订单基本上已经付款了。
我有几个选项可以执行此操作:我可以向我的 Order 实体添加 isClosed 属性,并使用谓词执行“打开”订单的所有获取请求,但这仍然存在数据库需要处理大量记录的问题每次需要获取时,由于我的应用程序的工作流程,这通常与 Order 实体一起使用。如果我理解正确,创建“ClosedOrder”子实体也会遇到同样的问题,因为核心数据将所有子实体存储在数据库中的同一个表中。
在这种情况下创建一个完全独立的实体是愚蠢的吗?或者这正是我需要做的?我为我对数据库性能的整体缺乏了解而道歉,核心数据的美妙之处在于它抽象了需要学习的内容,但同时它实际上不能使它变得不重要,特别是在像这样的情况下,性能如果我的用户将其推得太远,可能会严重降低性能。
如果您使用 SQLite 存储类型并且“isClosed”属性为“索引”(实体编辑器面板中的设置),则您可能拥有数十万个订单,并且在仅过滤“时仍然具有良好、快速的获取时间”已关闭==是”。
创建一个单独的实体并不会真正为您带来太多性能,但它will当事情发生变化时,维护会变得更加痛苦(例如,花费一个迁移步骤的价格来执行两个迁移步骤)。您仍然存储所有这些项目,并且当正确设置时,SQLite 是一个称职的数据库库。这里使用索引属性,然后生成一些测试数据,然后测量性能。我相信你会满意的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)