所以我刚刚建立了一个数据库,它只包含一个包含以下字段的表:
key_value:保存一个密钥的6位数代码
兑换:如果兑换钥匙,则为布尔值
redeemed_by:谁兑换了它
redeemed_date:兑换时
software_name:密钥与之关联的软件的名称
我基本上从一个空的数据库开始,然后当有人通过PayPal购买时,他们获得自己的密钥并将其添加到数据库中。在此之后,他们打开一个应用程序,让他们输入他们的代码,然后在数据库中搜索并标记为已兑换,以便不能再次使用 - 这会导致兑换和未兑换的代码都在一个表中。
如果我要购买几千个,这会导致数据库大幅减速,可能会崩溃吗?如果它是一个更大的数字,比如10,000,怎么办?
对于这一点,究竟什么是一个好的解决方案,即使我有另一张兑换钥匙表,也必须查看已兑换的表格,看看它是否已被兑换?
感谢您的回答,我还在学习数据库和SQL!
答案 0 :(得分:1)
我认为你的设计很健全。您可能希望根据要运行的查询添加索引。 key_value听起来像一个好的主键,也可以作为更新兑换的索引。
如Marc B所述,硬件是您唯一可能考虑的性能。
答案 1 :(得分:1)
我会为此使用两个表:一个用于您已指定的内容,另一个用作存档表,其中的作业定期迁移到已兑换/过期的记录。
推理:该表的主要目的是为了赎回,而不是用作存档。随着时间的推移,随着越来越多的兑换记录在表格中找到,查找未兑换记录的表现开始变得越来越糟,因为所有的" deadwood"在表中。 (您认为eBay在一张桌子中包含所有活动和完成的拍卖吗?)
如果你仍然需要一个" one-table"解决方案,您可以轻松创建合并两个表的视图。
此外,如果您设置了正确的主键,性能(暂时)将不会快速降低,因为这将消除表扫描,这是您在记录量增长时所暗示的。