optimisation sql
Salut à tous ,
une petite question , je suis entrain de développer une appli qui va nécessiter une grosse base de données , je cherche donc le meilleurs moyen de l'optimiser en prévention afin d'eviter au maximum les longues attentes suite à un "SELECT" . Quelle optimisation faut il s'occuper dans un premier temps ? et que pensez vous des table temporaires du type "HEAP" ? Est il nécessaire d'effectuer régulièrement un "OPTIMIZE TABLE" et "ANALYSE TABLE" ?
Merci d'avance pour tous vos messages sur cette discution .
Cordialement , christophe.
Ubuntu User
Alors, pour optimiser une base SQL, il faut utiliser la fonction EXPLAIN de MySQL qui te dira comment MySQL prend ta requête, comment il la décompose et quel algorithme il choisit d'utiliser pour donner la réponse.
A partir de la, il te suffit de créer des index pour les accélérer.
Pour tout ce qui est optimisation MySQL, je ne saurais vous conseiller de beaucoup se documenter sur le net en lisant la doc. MySQL, mais aussi en lisant de fabuleux livre de Mr Zawodny :
High performance MySQL.
PS : règle de base => privilégie au maximum des jointures sur des clés primaires.
Merci de tes conseils , suite à ton message , j'ai trouvé ce site qui explique l'utilisation de "EXPLAIN" sous phpmyadmin et montre l'efficacité d'indexer certain champs ... il y a d'autre méthodes d'optimisation d'expliqué utile ou non selon les cas voici cette page pour ceux que ca interesse .
http://www.chevrel.org/fr/optimiser/phpmysql/
Si vous avez d'autre techniques d'optimisation , n'hesitez pas ;-)
Ubuntu User
Si tu as une base immense, peut-être qu'il faut se pencher en priorité sur la qualité du matériel plutôt que de tenter d'écrire des requêtes optimisée.
De plus, tenter d'écrire un programme parfait dès e départ n'est pas forcément le meilleurs moyen d'être efficace quand on est débutant.
Je te conseille d'écrire une application qui fonctionne, puis d'optimiser l'usage du SQL. Avec l'expérience que tu auras acquis, tu seras capable d'écrire une application efficace.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Le matériel est assez bon (bi proc Xeon , 2Go Ram , Connexion par fibre optique ) et ce que je suis entrain de développer fonctionnera uniquement en intranet donc pas de problème de ce coté là , et je n'essaye pas d'écrire un programme parfait dés le départ , c'est juste que je prend de l'avance pour éviter de devoir modifier la majorité de mes requêtes si une optimisation (aussi petite soit elle) peut être faite sur l'écriture des requêtes ou autre , autant le faire pendant le développement , c'est un gain de temps , et je ne suis pas vraiment débutant ,certes je ne suis pas un expert en SQL , mais je ne suis pas débutant non plus . c'est juste que je ne me suis jamais de trop préoccupé de l'optimisation d'une base , n'ayant jamais vraiment eu de grosse base à traiter . Aujourd'hui , c'est une application professionnel , je m'efforce d'onc de l'optimiser au maximum .
Ubuntu User
Je vais juste te donner quelques trucs de ma maigre expérience.
En tant que développeur. À force de vouloir chiader une requête pour qu'elle soit optimisée, on perd de vue l'essentiel : la simplicité. Et on s'amuse à faire des requêtes tarabiscoter et à rajouter des index dans tous les sens. Un trop grand nombre d'index risque de grever les performances. Ensuite, la maintenabilité risque d'en souffrir.
En tant qu'adminsys. Il est parfois plus judicieux de tuner le système hôte et le serveur MySQL. De jouer avec les différents caches, le nombre de fichiers pouvant être ouverts à la fois, etc. Et bien évidemment, le serveur Web ne doit pas être sur la même machine que le serveur MySQL.
Tu ne gagneras pas de temps en faisant tes optimisations pendant le développement, car tu vas prendre beaucoup de temps à optimiser chaque requête, alors qu'au moins la moitié partira à la poubelle. Comme dans tout développement.
Avec l'expérience, tu arriveras à optimiser tes requêtes sans même t'en rendre compte ;)
Maintenant, tu peux choisir de faire les même erreurs que moi, mais ce serait dommage.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: