Sous MySQL, je suis confronte a des temps de reponse aux requetes
beaucoup trop longs. Exemple : je dispose de 2 tables ja et zh dont le
contenu ressemble a ceci :
... mis a part qu'il y a environ 200 000 lignes dans chaque table.
(les champs sont des VARCHAR(20))
J'ai besoin de realiser une jointure entre ces deux tables. Je procede
de la maniere suivante :
SELECT * FROM ja j,zh z WHERE j.id2=z.id1;
Le temps de reponse a cette requete est de plusieurs heures ! (une bonne
dizaine)
J'ai donc essaye avec un nombre de lignes moins important : 10 000.
Avec 10 000 lignes, le temps de reponse est d'environ 3 minutes, ce qui est
bien evidemment trop long ! Pour donner un ordre d'idee, j'ai exporte
ces tables de 10 000 lignes dans des fichiers textes et j'ai lance une jointure
sous bash, a l'aide de la commande join :
$join -1 2 -2 1 table1 table2 > resultat
La commande s'execute en moins d'une seconde !
Je me suis alors dit que MySQL avait du mal a gere les chaines de caracteres,
alors j'ai essaye avec des SMALLINT. Le resultat est le meme...
Je ne suis pas du tout un specialiste de SQL, mais je ne comprends pas du tout
pourquoi ces temps de reponses sont si longs. Pourtant, une base de donnees
est sensee pouvoir gerer enormement d'entrees ? Je ne pense pas que 200 000
(et a fortiori 10 000) lignes lui posent probleme. Et pourtant...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Archives
Bonjour,
Vérifier d'abord que les champs id1 et id2 sont de même type et définis en clé primaire (à champ unique).
Puis, simplifier la requête SQL en
SELECT * FROM ja INNER JOIN On ja.id1=zh.id2 LIMIT 10
Le résultat doit être immédiat.
"Erwann Thoraval" <xethora at atr dot jp> a écrit dans le message de news:
Bonjour,
Sous MySQL, je suis confronte a des temps de reponse aux requetes beaucoup trop longs. Exemple : je dispose de 2 tables ja et zh dont le contenu ressemble a ceci :
... mis a part qu'il y a environ 200 000 lignes dans chaque table. (les champs sont des VARCHAR(20))
J'ai besoin de realiser une jointure entre ces deux tables. Je procede de la maniere suivante :
SELECT * FROM ja j,zh z WHERE j.id2=z.id1;
Le temps de reponse a cette requete est de plusieurs heures ! (une bonne dizaine)
J'ai donc essaye avec un nombre de lignes moins important : 10 000.
Avec 10 000 lignes, le temps de reponse est d'environ 3 minutes, ce qui
est
bien evidemment trop long ! Pour donner un ordre d'idee, j'ai exporte ces tables de 10 000 lignes dans des fichiers textes et j'ai lance une
jointure
sous bash, a l'aide de la commande join :
$join -1 2 -2 1 table1 table2 > resultat
La commande s'execute en moins d'une seconde !
Je me suis alors dit que MySQL avait du mal a gere les chaines de
caracteres,
alors j'ai essaye avec des SMALLINT. Le resultat est le meme...
Je ne suis pas du tout un specialiste de SQL, mais je ne comprends pas du
tout
pourquoi ces temps de reponses sont si longs. Pourtant, une base de
donnees
est sensee pouvoir gerer enormement d'entrees ? Je ne pense pas que 200
000
(et a fortiori 10 000) lignes lui posent probleme. Et pourtant...
Merci pour vos elements de reponse !
-- E. Thoraval
Bonjour,
Vérifier d'abord que les champs id1 et id2 sont de même type et définis en
clé primaire (à champ unique).
Puis, simplifier la requête SQL en
SELECT * FROM ja INNER JOIN On ja.id1=zh.id2 LIMIT 10
Le résultat doit être immédiat.
"Erwann Thoraval" <xethora at atr dot jp> a écrit dans le message de news:
slrncbnp3p.j91.xethora@pxs078.slt.atr.jp...
Bonjour,
Sous MySQL, je suis confronte a des temps de reponse aux requetes
beaucoup trop longs. Exemple : je dispose de 2 tables ja et zh dont le
contenu ressemble a ceci :
Vérifier d'abord que les champs id1 et id2 sont de même type et définis en clé primaire (à champ unique).
Puis, simplifier la requête SQL en
SELECT * FROM ja INNER JOIN On ja.id1=zh.id2 LIMIT 10
Le résultat doit être immédiat.
"Erwann Thoraval" <xethora at atr dot jp> a écrit dans le message de news:
Bonjour,
Sous MySQL, je suis confronte a des temps de reponse aux requetes beaucoup trop longs. Exemple : je dispose de 2 tables ja et zh dont le contenu ressemble a ceci :