IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Firebird Discussion :

Index impossible pour une clause LIKE '%ABC%' ?


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut Index impossible pour une clause LIKE '%ABC%' ?
    Bonjour,

    Avec firebird 2.5 j'ai une table contenant un champ Texte sur lequel je souhaite faire des recherches.
    Pour simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE STREETS
    	(
    		ID    INTEGER                        NOT NULL,
    		NAME  VARCHAR(70) CHARACTER SET UTF8 NOT NULL COLLATE UNICODE_CI_AI,
    		CONSTRAINT PK_ID PRIMARY KEY (ID)
    	);
     
    CREATE INDEX STREET_NAME ON STREETS (NAME);
    Je souhaiterais pouvoir faire une requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  * FROM STREETS WHERE NAME LIKE '%quai%';
    Malheureusement, (et logiquement) l'index n'est pas utilisé si le wildcard % est utilisé en début de chaîne (dans l'analyseur de plan, j'ai "PLAN (STREETS NATURAL)" et pas "PLAN (STREETS INDEX (STREET_NAME))".

    Existerait-il une solution pour accélérer les recherches de type '%abc%' (ici, ils disent qu'il n'y a que des index b-tree dans Firebird) ?

    Merci...

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Malheureusement les requêtes de ce type (CONTAINING 'ABC') ne solliciteront pas l'index.
    Seules celles du type STARTING [WITH] 'ABC'.

    Pas moyen à ma connaissance d'y pallier.

    [edit]
    Tiens, avec un SIMILAR TO qu'est-ce ça donne ? (en sachant par avance que l'index ne sera pas utilisé non plus).

    @+ Claudius.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    avec un SIMILAR TO qu'est-ce ça donne ? (en sachant par avance que l'index ne sera pas utilisé non plus).
    Exactement le même résultat (plan et temps d'exécution)...

Discussions similaires

  1. index fulltext pour une vue
    Par aghilass dans le forum Administration
    Réponses: 6
    Dernier message: 25/07/2013, 10h32
  2. [Npgsql] Quel paramètre pour une clause IN?
    Par takinelinfo dans le forum Accès aux données
    Réponses: 1
    Dernier message: 08/09/2011, 12h05
  3. Réponses: 10
    Dernier message: 04/04/2011, 21h15
  4. Réponses: 4
    Dernier message: 23/10/2009, 00h18
  5. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo