1

私は最近、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ます。

4

1 に答える 1