Разница в использовании __icontains и нижнем регистре запроса? - PullRequest
0 голосов
/ 10 июля 2020

Есть ли разница в производительности, если я опущу запрос перед использованием __contains или напрямую __icontains. В коде:

Это

def search(request):
    query = (request.GET.get("q")).lower()
    if query:
        users = User.objects.filter(location__contains=query)

VS

def search(request):
    query = request.GET.get("q")
    if query:
        users = User.objects.filter(location__icontains=query)

Я уменьшил location при его вставке в базу данных. И запрос - это запрос, который может быть в любых случаях.

Не стесняйтесь спрашивать !!!

1 Ответ

1 голос
/ 10 июля 2020

Обычно поиск без учета регистра (или операция LIKE) выполняется путем преобразования LHS и RHS в одинаковые регистры либо в нижний, либо в верхний. case.

Примерно так,

SELECT *
FROM YourTable
WHERE <b>UPPER(YourColumn) = UPPER('VALUE')</b>

Если вы уверены, что ваш столбец БД location содержит только строчные буквы, первый вариант лучше .

Примечание: Вы можете не увидеть разницы в производительности в небольших базах данных (10k записей), но вы увидите это в больших БД.

...