Джанго, фильтрация по строке быстрее, чем отношения SQL? - PullRequest
3 голосов
/ 11 апреля 2019

Является ли основным недостатком, если я запрашиваю информацию моего пользователя по его user_id (string), а не создаю модель Profile и связываю их с другими моделями, используя отношения SQL?

Пример 1: (user_id хранится в сеансах django.)

class Information(models.Model):
    user_id = models.CharField(...)
    ...

# also applies for .filter() operations.
information = Information.objects.get(user_id=request.getUser['user_id'])

примечание: я храню информацию профиля пользователя на Auth0 .

Пример 2: (user_id хранится в Profile.)

class Profile(models.Model):
    user_id = models.CharField(...)

class Information(models.Model):
    profile = models.ForeginKey(Profile, ...)
    ...

information = Information.objects.get(profile=request.getProfile)

примечание: с помощью этого метода профиль будет толькоиметь одно поле, user_id.

В Django будет ли использование строки вместо объекта запроса влиять на производительность при получении элементов?

1 Ответ

3 голосов
/ 11 апреля 2019

Производительность здесь не проблема, как отметил Дирк;как только столбец проиндексирован, разница в производительности между типами данных должна быть незначительной по сравнению с другими факторами.Вот связанный вопрос SO для большей перспективы.

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

Еще один аспект заключается в том, что если у вас есть отношения между вашими данными, вам абсолютно необходимо убедиться, что они точно представлены в ваших моделях, используя отношения Джанго .В противном случае на самом деле нет особого смысла использовать ORM в Django.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...