Performances: stockage d'un nom normalisé pour les villes & communes pour permettre l'utilisation de l'index#5599
Conversation
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
rsebille
left a comment
There was a problem hiding this comment.
Je pense que tu peux fusionner le commit "add normalized_name field to improve autocomplete" avec son pendant "move trigram index to normalized_name field"
| # https://docs.djangoproject.com/en/dev/ref/contrib/postgres/indexes/#ginindex | ||
| # https://www.postgresql.org/docs/11/pgtrgm.html#id-1.11.7.40.7 | ||
| GinIndex(fields=["name"], name="cities_city_name_gin_trgm", opclasses=["gin_trgm_ops"]) | ||
| GinIndex(fields=["normalized_name"], name="cities_city_norm_name_gin_trgm", opclasses=["gin_trgm_ops"]) |
There was a problem hiding this comment.
Soyons urbains 😁, surtout qu'on le fait à 2 endroits.
| GinIndex(fields=["normalized_name"], name="cities_city_norm_name_gin_trgm", opclasses=["gin_trgm_ops"]) | |
| GinIndex(fields=["normalized_name"], name="%(class)s_normalized_name_gin_trgm", opclasses=["gin_trgm_ops"]) |
There was a problem hiding this comment.
Le soucis c'est que le nom des index est limité à 30 caractères :-/
There was a problem hiding this comment.
meh, alors en virant le suffixe gin_trgm ? Je trouve que c'est le moins utile car normalement tu retrouves plus ou moins l'information dans PG ou alors c'est dans le code, mais quand tu regardes un EXPLAIN ça aide d'avoir un nom explicite des champs concernés.
There was a problem hiding this comment.
Yup, j'ai tronqué les suffix pour que ça rentre :)
Le plus triste c'est que cette limite de 30 vient d'Oracle 😒
Et que Postgresql gère par défaut jusqu'à 63 caractères: https://www.postgresql.org/docs/15/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
Je serais presque tenté d'aller adapter Index.max_name_length 👀
4e01f2f to
340e5f7
Compare
340e5f7 to
0f68da6
Compare
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
0f68da6 to
7127e82
Compare
8233df6 to
160f940
Compare
160f940 to
9f938a4
Compare
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
There was a problem hiding this comment.
Top, hâte que ce soit en prod pour que l’app passe moins de temps à chercher des villes 🕵️
Le commit d2dd939 mériterait vraiment une description plus approfondie. On déclare immutable une fonction qui ne l’est pas. Pourquoi ?
Like the unaccent function, it is not immutable. But it is (slyly) declared as such to Posgresql to enable its use in indices & generated fields.
with a GIN trigram index on it. Also, drop the unused GIN trigram index on name field
and its GIN trigram index. Also drop the unused GIN trigram index on name field
9f938a4 to
e534b14
Compare
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
🤔 Pourquoi ?
🍰 Comment ?
🚨 À vérifier
🏝️ Comment tester ?
💻 Captures d'écran