-
optimisation like %%
Bonjours, j'ai une table avec plus de 2millions d'enregistrements.
et j'aimerai rechercher une chaine de caractère dans celle-ci.
table:
titre|id
titi|1
tototititata|2
tutu|3
...
Le but, c'est de rechercher titi dans cette table et de trouver les id 1 et 2 :)
voici une requete qui marche mais qui est trés longue:
SELECT id from table where titre like '%titi%'
ya-t-il moyen d'optimiser cette recherche ?
(je précise que j'ai déja essayé d'utiliser des index mais mysql n'en prend pas compte ainsi qu'un index fulltext.. qui ne retourne pas 2.. donc qui ne marche pas..)
-
Passé de MySQL vers un moteur plus performant comme Oracle.
As-tu mis ta colonne comme étant un index?
Cela accélérerait les recherches sur les 'titi%'
-
je ne désire pas changer pour oracle dsl lol
et sinon j'ai utiliser les index mais ils ne sont pas utilisé par mysql
sinon rechercher titi% ne m'intéresse pas
-
Personne n'as de réponse ? :(
-
slt
tiens, ca n´existe pas les index em Mysql????? 8O
http://dev.mysql.com/doc/refman/5.0/...ate-index.html
-
-
je précise encore que j'ai déja essayer d'utiliser les index "normaux" ainsi que les full text mais leur réponses ne me convient pas !
citation :
-----------------------------------------------------
table:
titre|id
titi|1
tototititata|2
tutu|3
...
Le but, c'est de rechercher titi dans cette table et de trouver les id 1 et 2
--------------------------------------------------
les index normaux retourne "1" mais surement pas "1 et 2"
les index full text retourne "1" mais pas "1 et 2"
moi je cherche a avoir les réponse 1 et 2.
il existe :
SELECT id from table where titre like '%titi%'
qui retourne "1 et 2" cependant ce n'est pas du tout optimisé ! et j'aimerai donc optimiser ce résultat ^^
-
oups :oops:
J'ai peur que ce soit sans espoir. Je ne vois pas comment on pourrait éviter un parcourt complet pour ce genre de recherche... Tout ce que je vois c'est tenter de gagner du temps sur la comparaison, 'like "%toto%"' n'étant peut-être pas optimal... et encore.
Peut-être avec 'POSITION("toto" IN field)!=0' ?
-
Je ne vois pas non + comment faire autrement pour chercher le nombre correspondant à titi. C'est sur que sur 2.000.000 de lignes ça doit etre long. Il n'y a pas moyen d'alléger ta table?
-
heu nan je pense pas pouvoir allégé la table, o mieu elle fera dans les 1M5 :/