-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TECH] Ajouter des index sur les tables pg #10441
base: dev
Are you sure you want to change the base?
Conversation
Une fois les applications déployées, elles seront accessibles via les liens suivants :
Les variables d'environnement seront accessibles via les liens suivants : |
@@ -0,0 +1,94 @@ | |||
const up = async function (knex) { | |||
// table 'certification-subscriptions' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vu l'expressivité de l'api knex je pense qu'on peut omettre les commentaires
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pour exprimer plus directement les tables et index ajoutés, je propose
// table 'certification-subscriptions' | |
const indexesToAdd = { 'certification-subscriptions': ['complementaryCertificationId', 'certificationCandidateId']}, | |
{'complementary-certifications': ['key']} | |
; | |
for (const tableName of Object.keys(indexesToAdd)) { | |
await knex.schema.table(tableName, function (table) { | |
table.index(indexesToAdd[tableName]); | |
}); | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai préféré une syntaxe plus classique avec un object {table:"nomTable", index: ["column de l'index"]}, mais la PR est effectivement bien plus lisible avec une vraie symétrie par construction entre le up et le down
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tech review ok 🎉
749ee5d
to
79cca77
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ko au niveau des tests
J'aurais ete interesse par les EXPLAIN ANALYZE qui ont amenes choisir de positionner ces index pour mon propre apprentissage. Mais pas besoin de cela pour valider, c'est + par curiosite.
@@ -0,0 +1,28 @@ | |||
const indexesToAdd = [ | |||
{ tableName: 'certification-subscriptions', index: ['complementaryCertificationId', 'certificationCandidateId'] }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il y a deja eu un index de mis sur : api/db/migrations/20240618143134_add-index-on-certification-candidate-id-in-subscriptions-table.js
Est-ce qu'il ne faudrait pas enlever le precedent index (il n'avait pas l'air super efficace) ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il est utile mais ne couvre pas tous les usages.
{ tableName: 'certification-subscriptions', index: ['complementaryCertificationId', 'certificationCandidateId'] }, | ||
{ tableName: 'complementary-certifications', index: ['key'] }, | ||
{ tableName: 'features', index: ['key'] }, | ||
{ tableName: 'campaign-features', index: ['campaignId', 'featureId'] }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose d'ajouter aussi sur certification-center-features (pour grouper les tables similaires)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ca fait partie du prochain batch d'index, je ne souhaite pas ajouter plus d'index car le temps de MEP serait impacté.
79cca77
to
98af8f3
Compare
🍂 Problème
Plusieurs tables postgresql sont dépourvus d'index ou ont des usages non indexés.
🎃 Remarques
Cette PR est une première partie, il reste des tables non indexés mais nous ne voulons pas ajouter tous les index d'un coup pour éviter un temps de MEP long.
Ils seront ajoutés progressivement.
🪵 Pour tester