J'ai une table avec environ 2 000 000 lignes. J'ai besoin d'interroger l'une des colonnes pour récupérer les lignes où une chaîne exsiste dans le cadre de la valeur.Vérification efficace de la présence de texte dans une colonne de texte
Lorsque j'exécuterai la requête, je connaîtrai la position de la chaîne, mais pas avant. Donc, une vue qui prend une sous-chaîne n'est pas une option.
Pour autant que je peux voir, je trois options
- en utilisant comme '%%'
- utilisant instr
- utilisant substr
J'ai la possibilité de créer un index basé sur la fonction, si je suis gentil avec le dba.
Pour le moment, toutes les requêtes prennent environ deux secondes. Quelqu'un at-il l'expérience de laquelle de ces options fonctionnera le mieux, ou s'il y a une autre option? La sélection sera utilisée pour les suppressions toutes les quelques secondes, elle sélectionnera généralement 10 lignes.
modifier avec un peu plus d'informations
Le problème est à peu près aussi nous utilisons une table pour stocker des objets avec des clés arbitraires et des valeurs. Les objets proviennent de l'extérieur de notre système, donc nous avons une portée limitée pour les contrôler, donc la colonne de texte est quelque chose comme 'key1 = abc, key2 = def, keyn = ghi' je sais que c'est horriblement dénormalisé mais comme nous ne savons pas les clés seront (dans une certaine mesure) c'est un moyen fiable pour stocker et récupérer des valeurs. Récupérer une ligne est assez rapide car nous recherchons l'ensemble de la colonne, qui est indexée. Mais la performance n'est pas bonne si on veut récupérer les lignes avec key2 = def.
Nous pourrions être en mesure de créer une table avec des colonnes pour les clés les plus courantes, mais je me demandais s'il y avait un moyen d'améliorer les performances avec la configuration existante.
Veuillez publier quelques exemples de données et le résultat souhaité de la requête – Quassnoi
Vous ne pouvez pas avoir les données dont vous avez besoin dans sa propre colonne? Le contenu de la colonne est censé être "atomique" – siukurnin