SqliteTable: all columns indexed ?
En regardant de plus près les index qui existent sur les tables, je m’aperçois que toutes les colonnes sont indexées. Par exemple dans le cas de la table des TX, cela fait beaucoup de monde ! :)
Voici le code responsable à mon avis :
generateCreateIndexes() {
return this.keys()
.map((fieldName) => {
return `CREATE INDEX IF NOT EXISTS idx_${this.name}_${fieldName} ON ${this.name} (${fieldName});\n`;
})
.join("");
}
keys(): (keyof T)[] {
return Underscore.keys(this.fields);
}
Il s'agit d'un vieux code. Mais cela doit ralentir de beaucoup l'écriture dans la table, non ? D'autant que tout indexés semble inutile.
Par ailleurs je vois dans le constructeur que l'on a pour chaque colonne un SqlFieldDefinition
avec un boolean indexed
. Le but initial était sans doute d'utiliser cette valeur pour savoir quelle colonne indexées ou pas.
Je me trompes @cgeek ? Redis moi stp, si tu te penses que ca peut-être utile que j'optimise des choses de ce côté là aussi.
La correction semble toute simple, mais globalement il faudra retester une synchro pour voir si ca change quelque chose.