3

テーブルUserProfileがあるとします。

class UserProfile(models.Model):
    name = models.CharField(max_length=30, db_index=True)     # db_index 1
    email = models.EmailField(unique=True, db_index=True)     # db_index 2
    password = models.CharField(max_length=60)
    birthday = models.DateField(db_index=True)                # db_index 3
    about = models.TextField(blank=True)
    created = models.DateField(auto_now_add=True)
    lang = models.CharField(max_length=1, choices=LANG, blank=True)

このサイトには、名前、年齢、メールアドレスなどのフィルターを備えた検索フォームがあります。

では、これらのフィルターでdb_indexを使用する本当の理由はありますか?

ありがとう!

4

1 に答える 1

3

はい、もちろん。Djangoはデータベースを使用するため、これらのフィールドを検索する場合、ルックアップはデータベースインデックスの恩恵を受けます。

テーブルを作成したら、定義syncdbに追加した後で再度実行してもインデックスは追加されないことに注意してくださいdb_index。データベースシェルでテーブル定義を直接変更するか、Southなどのツールを使用する必要があります。

スケールのほとんどの問題と同様に、これらは統計的に多数の行がある場合にのみ適用されることに注意してください(10,000は大きくありません)。

さらに、挿入を行うたびに、インデックスを更新する必要があります。したがって、インデックスを追加する列に注意してください。

于 2011-12-16T19:23:11.077 に答える