Korzystanie z Django 1.3x.Czy mogę łatwo przesadzić z Django ORM 'iexact', aby użyć LOWER() zamiast UPPER()?
Obecnie mam bardzo, bardzo duży i bardzo, bardzo aktywny zestaw danych Postgres, który ma ważną kolumnę indeksowaną jako lower(column)
.
Właśnie zdałem sobie sprawę, że niektóre typowe zapytania były dość powolne, ponieważ ORM Django generuje zapytanie do pola jako blah = UPPER(column)
, kiedy używam iexact
do dopasowania tego pola.
Czy istnieje prosty sposób zmuszenia ORM do użycia lower()
zamiast tego, czy muszę wstawić do surowego SQL dla tego?
Dzięki!
[strona pytanie za komentarze: Czy istnieje dobry powód, naprzeciwko, aby wykorzystali upper()
na indeksie zamiast lower()
?]
Chris, dzięki za odpowiedź! Natknąłem się również na te bilety, ale nie widziałem żadnej poważnej dyskusji na temat, dlaczego nagle zmieniło się na 'upper()'. Twój wgląd w bitwie Oracle jest najbardziej słyszałem. Jest to proste zapytanie, więc przypuszczam, że użyję po prostu '.raw()' tutaj. Dzięki wielkie! –