
Messages : 313
Grade : Partenaire Particulier
Statut : Hors ligne |
-- Sujet Déplacé --
Je sais, ça n'a pas grand chose à voir (je vais me faire bannir par aYou !!! ). Mais si vous avez besoin d'explications claires pour optimiser votre base mysql et notamment créer des index permettant d'accélérer nettement vos requêtes de type Select, je suis l'homme qu'il vous faut !
J'ai réussi à faire passer des requêtes de 800 à 6 secondes cette semaine (avec des requêtes contenant des jointures multiples entre des tables contenant jusqu'à 100 000 lignes...) 
Mais non, mes chevilles vont très bien 
Edit de X-LozH : Wahooo ! Les modérateurs peuvent déplacer des messages maintenant ! aYou va pouvoir s'amuser !!!
Edité par Colas le 25 Aout 2006 à 22h21 |

Messages : 450
Grade : Administrateur
Statut : Hors ligne |
Citation : J'ai réussi à faire passer des requêtes de 800 à 6 secondes cette semaine (avec des requêtes contenant des jointures multiples entre des tables contenant jusqu'à 100 000 lignes...) 
Mais non, mes chevilles vont très bien 
Une requete qui prend 800 secondes????? Ya pas un problème dans la conception de tes tables non . 100 000 lignes ne devraient pas posé de problèmes a MYSQL. Ta fais un EXPLAIN de ta requete ? Tu fais des jointures sur combien de tables?
Ta fait que de plus que de mettre des index a tes clés étrangeres et primaires ? Si tu as des astuces suplémentaires je suis preneur.
|

Messages : 313
Grade : Partenaire Particulier
Statut : Hors ligne |
alors déjà, la base c'est une base de FT... donc je n'en suis absolument pas le concepteur... j'ai juste eu besoin de leur optimiser leur base.
A part les index bien placés (chose qu'il faut déjà bien connaître), il a fallu que je vérifie la taille de toutes leurs clés :
ils avaient par exemple la clé primaire d'une table en varchar(10), alors qu'elle était indiquée en clé étrangère dans une autre table en varchar(15). Que des trucs comme ça...
Et l'explication des 6 secondes (ce qui est déjà énorme), c'est le nombre de jointures (une dizaine par requête en moyenne) ... et leur serveur !
|

Messages : 61
Grade : Membre
Statut : Hors ligne |
Des clés en varchar ?
|

Messages : 313
Grade : Partenaire Particulier
Statut : Hors ligne |
oui prodigy... des clés en varchar !
Mais elles sont justifiées dans certains cas. Notamment parce que certaines viennent d'un ancien système qui cumulait les chiffres et les lettres. Et ça, on ne peut pas y toucher, faut adapter le produit aux données qui existent déjà et aux données à venir.
|

Messages : 386
Grade : Super Modérateur
Statut : Hors ligne |
le md5 par exemple ?
|

Messages : 313
Grade : Partenaire Particulier
Statut : Hors ligne |
Le md5 te donne effectivement une chaîne de 32 caractères (chiffres et lettres), mais il y a peu de chances qu'une clé primaire ou étrangère dans une base de données soit une chaîne codée en md5.
Pour info ou rappel, ce qu'on appelle une clé étrangère est un champ d'une table qui permet de faire une jointure avec une autre table (souvent avec la clé primaire de cette autre table). Les puristes risquent de se sentir choqués par ma simplification, mais pour les débutants, ça peut aider à comprendre.
|

Messages : 386
Grade : Super Modérateur
Statut : Hors ligne |
oui lol ca je sais Mais c'est quand même fesable
|

Messages : 61
Grade : Membre
Statut : Hors ligne |
Je suis pas sûre que "jointure" soit très parlant pour un débutant.
Une jointure est une relation entre une ou plusieurs tables d'une base de données. Ces relations sont représentées par les correspondances entre les clés primaires et étrangères.
Les relations permettent d'organiser les informations de la base. On parle alors de base de données relationnelles.
Edité par Prodigy le 26 Aout 2006 à 14h58 |

Messages : 313
Grade : Partenaire Particulier
Statut : Hors ligne |
Effectivement, c'est beaucoup mieux !
Tu devrais faire un tuto sur les bases des bases de données !
|