|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Bonjour à tous,
Cette méthode d'indexation de champ alpha-numérique (texte, mémo, etc...) est intéressante, en terme de temps de réponse. Prenons l'exemple d'une table Produit : - Id_Produit (PK) - Libellé (PK) ... Contenu : Code :
Rechercher tous les produits dont le libellé contient une chaîne de caractères saisie, où qu'elle soit dans Libellé. ==> exemple : saisie de la chaîne de caractères "poi". Solution sans indexation : Code sql :
SELECT Id_Produit, Libellé FROM Produit WHERE Libellé LIKE "*poi*" Solution avec indexation :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||||||||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 3 460 ![]() |
Salut,
Ça doit être pour ça qu’on a inventé l’indexation plein-texte en SQL Quitte à bricoler un truc si le SGBD (indigne) ne possède pas d’indexation full-text, je ferais plutôt un truc comme: Code :
Code :
|
||||
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Bonsoir Fabien,
Citation:
Ta méthode est valable, bien entendu, mais tu es obligé d'utiliser le LIKE "*xxx*" pour trouver une chaîne de caractères. Donc, OK, il est plus efficace de chercher une chaîne de caractères dans des mots clés que dans les libellés complets, c'est vrai. Malgré tout, le seul LIKE "xxx*" sur un champ, en clé primaire de surcroît, est un poil plus efficace.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 3 460 ![]() |
regarde dans l'article: Indexation documentaire & bases de données.
Une recherche avec le mot clé "full text" ou "indexation full text" devrait te renseigner sur les possibilités en SQL. |
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Bonjour Fabien,
Merci pour le lien. Je lirai plus en détail le document cible ce week-end (il était un peu trad, hier). Effectivement, c'est une possibilité intéressante. Néanmoins, cette méthode consiste, si j'ai bien compris, à rechercher des mots, et non des chaînes de caractères. Certes, les mots sont, tous, des chaînes de caractères, mais toutes les chaînes de caractères ne sont pas, forcément, des mots. Dans ton post (#2), d'ailleurs, tu parles aussi de recherche de mots et non de recherche de chaîne de caractères. Donc, la recherche avec l'indexation "full text" consisterait donc à rechercher : - "petits" ; - "pois" ; - "orange" ; ... et non : - tspo ==> de Petits pois ; - edesp ==> de Orange d'Espagne ; - sch ==> de Pois chiche ; ... Pour imager, voici la liste présentée précédemment, mais triée par la clé primaire (et non "physiquement") avec une flèche qui pointe sur les enregistrements concernés par ces trois exemples, lors du LIKE "xxx*" : Code :
En résumé, il s'agit d'une méthode de recherche de chaîne de caractères (que je n'ai d'ailleurs pas inventée) et non d'une méthode de recherche de mot, la seconde étant, en quelque sorte, "incluse" dans la première.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com