gpt4 book ai didi

python - Django:模型索引太慢

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:41 27 4
gpt4 key购买 nike

我最近正在使用 Django 构建一个化合物数据库。我在处理模型遍历时遇到麻烦。以下是我的问题:

型号:

class CompoundStructures(models.Model):
molregno = models.CharField(max_length=27L, primary_key=True)
molfile = models.TextField(blank=True)
standard_inchi = models.TextField(blank=True)
standard_inchi_key = models.CharField(max_length=27L, unique=True)
canonical_smiles = models.TextField(blank=True)
molformula = models.CharField(max_length=100L, blank=True)

class Meta:
db_table = 'compound_structures'

def __unicode__(self):
return self.molformula

该模型的数据库中有 1,000,000 多条记录:我运行这样的代码:

all_mols = CompoundStructures.objects.all()

mol_0 = all_mols[0] //quick
mol_100 = all_mols[100] //normal
mol_10000 = all_mols[10000] //slow
mol_100000 = all_mols[100000] //really slow!

为什么随着索引号变大,速度会变慢?这使得我无法遍历 CompoundStructures

最佳答案

当你做的时候

mol_100000 = all_mols[100000]

Django 从 CompoundStructures.objects.all() 计算 QuerySet

这总是很慢,因为您获取了所有摩尔,现在想要第 100000 个摩尔,这是合乎逻辑的。

如果您想从全部数百万行中获取一 (1) mol,那么在使用数据库和 Django 的 ORM 时,.get(id=100000) 是您唯一的选择。

这里使用 .get() 并不比您现在尝试做的成本更高,即。获取所有内容,然后评估 QuerySet。

关于python - Django:模型索引太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18222355/

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