Django模型。什么是更快:按字符串或整数过滤?

时间:2013-03-19 11:23:55

标签: django performance django-models

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)在数据库中包含相同的数据。 我想知道,如果这两个字符串之间存在任何性能差异:

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

那么,我应该使用ReviewString还是ReviewInteger

1 个答案:

答案 0 :(得分:1)

整数索引比varchar快。

虽然,只要你的review_type列上有一个索引,它的性能和速度差异就非常重要,因此你不应该真正做出性能方面的决定。

也许你应该更谨慎地选择一个更适合你的python代码的代码,而不是在数据库级别更快的代码。

问候