0

models.py:

class ReviewString(models.Model):
    REVIEW_TYPES = (
        ('bad', 'bad'),
        ('ok', 'ok'),
        ('good', 'good')
    )
    review_type = models.CharField(max_length=50, choices=REVIEW_TYPES)
    # other fields here


class ReviewInteger(models.Model):
    REVIEW_TYPES = (
        ('bad', -1),
        ('ok', 0),
        ('good', 1)
    )
    review_type = models.IntegerField(choices=REVIEW_TYPES)
    # other fields here

両方のテーブル (ReviewStringReviewInteger) には、データベースに同じデータが含まれています。これらの 2 つの文字列にパフォーマンスの違いがあるかどうかを知りたいです。

ReviewString.objects.filter(review_type='ok')
ReviewInteger.objects.filter(review_type=0)

では、またはを使用する必要がありますReviewStringReviewInteger

4

1 に答える 1

1

整数インデックスは、varchar インデックスよりも高速です。

ただし、review_type 列にインデックスがある限り、パフォーマンスと速度の違いはそれほど重要ではないため、パフォーマンスの側面について決定を下す必要はありません。

おそらく、データベース レベルでより高速なものよりも、Python コードにより適したものを選択する際により注意する必要があります。

よろしく

于 2013-03-19T12:34:46.327 に答える