Bonjour à tous,

Admettons une table de 10 champs. Un formulaire permet de rechercher sur cette table. Tout les champs présent dans la table doivent pouvoir servir de critère de recherche.

Mettre des index partout n'est évidemment pas une solution puisque les performances en Ajout/edition/suppression vont en prendre un coup et que l'ajout de nouvelle données est particulièrement important.

D'où ma question comment définir quelles colonnes privilégier ?

Devrais je plutôt imposer l'utilisation d'une colonne indexée avant l'utilisation d'une colonne non indexée ?

Par exemple interdire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT id FROM matable WHERE nom = 'test'
car nom n'est pas indexé

Mais autoriser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT id FROM matable WHERE dateins > NOW() AND nom = 'test'
puisque dateins est lui indéxé et que donc (si j'ai bien compris) la recherche de nom se fera que sur le set de données qui match la condition précédente.