2013-03-19 59 views
0

models.pyDjango模型。什么更快:按字符串或整数过滤?

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) 

所以,我应该使用ReviewStringReviewInteger

+1

我觉得整,但我更喜欢字符串,因为它很容易阅读和理解 – catherine 2013-03-19 12:20:47

回答

1

整数索引比varchar快。

虽然只要您在review_type列上有索引,但其性能和速度差别并不重要,因此您不应该在性能方面做出真正的决定。

也许你应该更仔细地选择一个更适合你的Python代码,而不是更快的数据库级别。

问候

+0

谢谢你,现在我可以使用字符串,而不必担心性能比较差的) – imkost 2013-03-19 13:01:17