Bonjour.
Soit une base SQLite sous iOS, et une table de plusieurs dizaines de milliers de lignes comportant une colonne "code postal" de 5 caractères, et 4 colonnes de 1 caractère, chacune pouvant avoir seulement 2 ou 3 valeurs, comme un code sexe.
Les valeurs de ces 5 colonnes ne changent quasi jamais. Ces 5 colonnes sont très fréquemment utilisées dans des clauses WHERE, mais pas forcément toutes en même temps.
Pour une question de performance, il me semble nécessaire d'utiliser un/des index. Mais lesquels ?
1) Créer un index sur chaque colonne, mais avec seulement 2 ou 3 valeurs différentes, ceci a-t-il un sens ?
2) Créer un index sur les 4 colonnes, mais sera-t-il utilisé si la clause WHERE ne spécifie que la valeur de certaines d'entre elles ?
3) Concaténer physiquement les 4 colonnes de 1 caractère en une seule colonne, construire un index sur cette colonne agrégée, et utiliser une clause WHERE avec un LIKE ? Outre que cette solution n'est pas très propre, SQLite utilise-t-il l'index quand un LIKE est spécifié ?
4) Créer un seul index sur le code postal et les 4 colonnes de 1 caractère, et utiliser une clause WHERE avec un LIKE ? SQLite utilise-t-il l'index quand un LIKE est spécifié ?
5) Autre ?
Merci de votre aide,
Gilbert
Partager