Je suis en train de concevoir un formulaire de search, et je me request si je devrais donner la possibilité de chercher en utilisant LIKE %search_ssortingng%
pour une table qui va avoir jusqu'à 4 millions de lignes
En général, je dirais non. C'est un bon candidat pour l' indexing de text intégral . Le %
principal dans votre string de search va éliminer la possibilité d'utiliser des index.
Il peut y avoir des cas où l'attente est acceptable et / ou vous ne voulez pas la surcharge administrative supplémentaire de la maintenance des index de text intégral, auquel cas vous pouvez choisir LIKE
.
Non, vous ne devriez vraiment utiliser LIKE '%...%'
lorsque vos tables sont relativement petites ou que vous ne vous souciez pas de la performance de vos propres requêtes ou d'autres requêtes sur votre database.
Il existe d'autres moyens d'atteindre cette capacité qui évoluent beaucoup mieux, l'indexing de text intégral ou, si celle-ci est indisponible ou pas assez flexible, l'utilisation de triggersurs d'insertion / mise à jour pour extraire les mots sans bruit.
Je mentionne cette dernière possibilité puisque vous ne voulez peut-être pas un index de text intégral. En d'autres termes, vous souciez-vous vraiment des mots comme "est", "ou" et "mais" (ce sont les mots de bruit auxquels je faisais allusion avant).
Vous pouvez séparer le champ en mots et placer ceux qui sont pertinents dans une autre table et utiliser des requêtes rapides sur cette table pour find les lignes réelles.
La search avec LIKE %search_ssortingng%
est très lente même sur les colonnes indexées. Worstcase la search effectue une parsing de table complète.
Si une search LIKE search_ssortingng%
est suffisante, je fournirais simplement cette possibilité.
Cela dépend – sans savoir à quel point la search doit être réactive, cela peut être bien ou complètement impossible. Vous ne saurez vraiment que si vous définissez votre search avec des templates de données probables et des critères de search.
Et comme RedFilter le souligne, vous pouvez envisager la search en text intégral , si la search simple ne fonctionne pas bien