gpt4 book ai didi

sql - 如何查询庞大的MySQL数据库?

转载 作者:行者123 更新时间:2023-11-29 14:55:22 25 4
gpt4 key购买 nike

我有 2 个表,一个 purchases 表和一个 users 表。采购表中的记录如下所示:

purchase_id | product_ids | customer_id
---------------------------------------
1 | (99)(34)(2) | 3
2 | (45)(3)(74) | 75

用户表如下所示:

user_id  | email              | password
----------------------------------------
3 | joeShmoe@gmail.com | password
75 | nolaHue@aol.com | password

为了获取用户的购买历史记录,我使用如下查询:

mysql_query(" SELECT * FROM purchases WHERE customer_id = '$users_id' ");

问题是,当购买表中插入数万条记录时会发生什么。我觉得这会影响性能。

所以我正在考虑将购买内容直接存储在用户行的附加字段中:

user_id | email              | password  | purchases
------------------------------------------------------
1 | joeShmoe@gmail.com | password | (99)(34)(2)
2 | nolaHue@aol.com | password | (45)(3)(74)

当我查询用户表中的用户名等信息时,我可以使用该查询轻松获取他们的购买历史记录。

这是一个好主意吗?它会有助于更好的性能还是 yield 微不足道,不值得让数据库看起来更困惑?

我真的很想知道专业人士在这些情况下会做什么,例如亚马逊如何在其数据库中查询用户的购买历史记录,因为他们拥有数百万客户。为什么查询不需要几个小时?

编辑

好吧,所以我想将它们分开是正确的方法。现在的问题是设计问题:

我应该继续使用我之前说明的“购买”表吗?在该设计中,我使用括号分隔每次购买的产品 ID,并在通过 PHP 提取它们时使用它作为分隔符来区分 ID。

相反,我应该将每个产品 ID 单独存储在“购买”表中,使其看起来像这样吗?:

purchase_id | product_ids | customer_id
---------------------------------------
1 | 99 | 3
1 | 34 | 3
1 | 2 | 3
2 | 45 | 75
2 | 3 | 75
2 | 74 | 75

最佳答案

不,这是一个非常非常非常糟糕的主意。

您打破了第一范式,因为您不知道如何对大型数据集进行分页。

亚马逊和雅虎! Google 会(可能)带回数百万条记录 - 但它们一次只会以 10 条、25 条或 50 条为一组向您显示这些记录。

他们还擅长猜测或计算您最可能感兴趣的内容 - 他们会首先向您展示这些内容。

我最有可能对我的历史记录中的哪些购买感兴趣?当然是最新的。

在违反关系数据库基础知识之前,您应该考虑将这些构建到您的设计中。

关于sql - 如何查询庞大的MySQL数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com