gpt4 book ai didi

database - 多对多关系 - 大表的查询性能

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:29 24 4
gpt4 key购买 nike

假设这是我的架构:

class modelA(models.Model):
b = models.ManyToManyField(through='linkModel')

class modelB(models.Model):
name = models.CharField()

class linkModel(models.Models):
a = models.ForeignKey(modelA)
b = models.ForeignKey(modelB)
(other link-relevant stuff)

在查找链接到 A 的 B 实例时,我预计什么时候会遇到查询性能问题,反之亦然。 100,000 行?百万?

使用单个 ForeignKey 关系而不是 ManyToMany(在某些情况下可能会重新排列模式)是否会提供更好的性能?

最佳答案

根据我不熟悉的框架的行为,连接可能会传递到后备数据库服务器以执行。如果是这样,那么您会发现索引效率是 O(log n),瓶颈不是连接而是结果集的大小。

假设有能力的架构设计和索引,批量数据操作性能总是受工作集大小的限制。

要获得适用于您的数据库服务器、框架和应用程序逻辑的特定组合的明确答案,您将必须执行测试,这可能与现代实践令人震惊。

您不一定需要使用大型复杂应用程序进行测试。您可以将有趣的应用程序代码摘录到测试应用程序中。不过,您需要大量数据。

如果您希望有人已经测试过您的特定场景,那么您需要详细描述您的配置。您已经提供了示例应用程序逻辑,这是一个好的开始。

数量惊人的事物会干扰。例如,在 Microsoft SQL Server 2008 数据库上启用自动收缩选项会产生巨大的开销,并将 TPM 数字降低约 3 倍。您将不得不查找并记录这些内容。

关于database - 多对多关系 - 大表的查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768969/

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