2013-03-19 2 views
0

models.py:Django модели. Что быстрее: фильтр по строкам или целым числом?

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 

Оба таблиц (ReviewString и ReviewInteger) содержит те же данные в базе данных. Я хочу знать, если есть какая-то разница Perfomance между этими двумя строками:

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

Таким образом, я должен использовать ReviewString или ReviewInteger?

+1

Я думаю, что целое число, но я предпочитаю строку, потому что это легко читать и понимать – catherine

ответ

1

Целочисленные индексы быстрее, чем varchar.

Хотя, если у вас есть индекс в столбце review_type, разница в производительности и скорости действительно не значительна, и поэтому вы не должны принимать решения по аспектам производительности.

Возможно, вам следует быть более внимательными к выбору того, который лучше подходит для вашего кода на языке python, а не быстрее на уровне базы данных.

С уважением

+0

спасибо, теперь я могу использовать строки, не опасаясь плохой Perfomance) – imkost

Смежные вопросы