par
Invité » 27 avr. 2005, 14:49
Merci pour l'idée ripat mais j'y avais pensé : check + repair + optimize tout est OK
(j'ai eut un doute comme je repartait de données importées depuis accès mais ca a l'air bon)
Un pote me prete temporairement son serveur :
http://jrdasm.no-ip.com/temp/cerber.rar (~2Mo) ce sont les fichiers d'une base myisam crée avec mysql 4.1.11 (l'actuelle 4.x)
C'est une base de test crée avec des valeurs random (les vraies données sont
très sensibles)
la table client comporte environ 46 000 enreg avec des numéros de dossier entre 0 et 100 000
la table fact contient environ 600 000 enreg avec des numéros de dossier <950 (c'est le résultat d'un premier peuplement que je n'ai pas eut le courage de refaire)
Donc j'ai énormément de clients sans lignes de facturation (~95%) alors que dans la vraie base c'est que 2100 clients sur 31 000
a tester avec la requête :
Code : Tout sélectionner
SELECT *
FROM `cli2` c left outer join `fac2` f
on `f`.`dossier`=`c`.`dossier`
WHERE f.`dossier` is null
le résultat du explain :
Code : Tout sélectionner
"id","select_type","table","type","possible_keys","key","key_len","ref","rows","Extra"
1,"SIMPLE","c","index","","PRIMARY",4,"",46618,"Using index"
1,"SIMPLE","f","index","","PRIMARY",8,"",686119,"Using where; Using index; Not exists"
le procedure analyse() (que je ne connaissais pas) ne peut aboutir : il attend les résultats de la requête qui ne se termine pas.
J'ai demandé a mon petit camarade de tester la requête chez lui, ca a mis son processeur à 100% et il a eut du mal a reprendre la main =>
MEFIEZ VOUS
je vais tester avec une version plus ancienne de mysql en attendant
Merci pour l'idée ripat mais j'y avais pensé : check + repair + optimize tout est OK
(j'ai eut un doute comme je repartait de données importées depuis accès mais ca a l'air bon)
Un pote me prete temporairement son serveur : http://jrdasm.no-ip.com/temp/cerber.rar (~2Mo) ce sont les fichiers d'une base myisam crée avec mysql 4.1.11 (l'actuelle 4.x)
C'est une base de test crée avec des valeurs random (les vraies données sont [b]très sensibles[/b])
la table client comporte environ 46 000 enreg avec des numéros de dossier entre 0 et 100 000
la table fact contient environ 600 000 enreg avec des numéros de dossier <950 (c'est le résultat d'un premier peuplement que je n'ai pas eut le courage de refaire)
Donc j'ai énormément de clients sans lignes de facturation (~95%) alors que dans la vraie base c'est que 2100 clients sur 31 000
a tester avec la requête :
[code]SELECT *
FROM `cli2` c left outer join `fac2` f
on `f`.`dossier`=`c`.`dossier`
WHERE f.`dossier` is null[/code]
le résultat du explain :
[code]"id","select_type","table","type","possible_keys","key","key_len","ref","rows","Extra"
1,"SIMPLE","c","index","","PRIMARY",4,"",46618,"Using index"
1,"SIMPLE","f","index","","PRIMARY",8,"",686119,"Using where; Using index; Not exists"[/code]
le procedure analyse() (que je ne connaissais pas) ne peut aboutir : il attend les résultats de la requête qui ne se termine pas.
J'ai demandé a mon petit camarade de tester la requête chez lui, ca a mis son processeur à 100% et il a eut du mal a reprendre la main =>[b] MEFIEZ VOUS[/b]
je vais tester avec une version plus ancienne de mysql en attendant