Optimisation requêtes mysql
16 messages
• Page 1 sur 2 • 1, 2
- muelsaco
- WRInaute discret

- Messages: 128
- Inscription: 19 Jan 2006
Optimisation requêtes mysql
Bonjour à tous!
J'ai une simple question à vous posez car je ne connais pas la réponse...
Pensez vous qu'il est mieux de se connecter à une base de données mysql en début de page, faire toutes les requetes puis refermer en fin de page? Ou au contraire fermé le plus possible la connection puis réouvrir par la suite en cas d'autres requêtes?
Merci d'avance!
J'ai une simple question à vous posez car je ne connais pas la réponse...
Pensez vous qu'il est mieux de se connecter à une base de données mysql en début de page, faire toutes les requetes puis refermer en fin de page? Ou au contraire fermé le plus possible la connection puis réouvrir par la suite en cas d'autres requêtes?
Merci d'avance!
-

finstreet - WRInaute accro

- Messages: 16999
- Inscription: 10 Juil 2005
vaut mieux fermer en bas de page... ouvrir et fermer plusieurs fois sur la meme page, ca va plutot charger tes requetes.
par contre y'a des requetes à éviter... du genre des jointures à trois tables ou des INSERT SELECT... c le genre de trucs qui fait ramer
par contre y'a des requetes à éviter... du genre des jointures à trois tables ou des INSERT SELECT... c le genre de trucs qui fait ramer
- petit-ourson
- WRInaute impliqué

- Messages: 855
- Inscription: 31 Mai 2004
Il vaut mieux ouvrir et fermé en début de page en le faisant une unique fois ;o)
- muelsaco
- WRInaute discret

- Messages: 128
- Inscription: 19 Jan 2006
A ok merci beaucoup!
Par contre j'ai remarqué un truc! Peut être que je me trompe mais bon...
Je fais une requête SELECT mais je n'affiche pas le contenu de suite. Je stocke toutes les informations dans des tableaux (à 2 dimensions forcémment) et ensuite l'affichage est nettement plus rapide!
Peut être que pendant le test le serveur était moins chargé... enfin qu'en pensez vous?
Par contre j'ai remarqué un truc! Peut être que je me trompe mais bon...
Je fais une requête SELECT mais je n'affiche pas le contenu de suite. Je stocke toutes les informations dans des tableaux (à 2 dimensions forcémment) et ensuite l'affichage est nettement plus rapide!
Peut être que pendant le test le serveur était moins chargé... enfin qu'en pensez vous?
-

sonikbuzz - WRInaute occasionnel

- Messages: 469
- Inscription: 21 Fév 2005
muelsaco a écrit:et ensuite l'affichage est nettement plus rapide!
Peut être que pendant le test le serveur était moins chargé... enfin qu'en pensez vous?
J'en doute, enfin tout depend du "nettement".
Le mieux c'est de se faire une petite fonction avec microtime() pour "bencher" les differentes requetes en boucle (entre 100 et 1000 fois) puis tu change l'ordre des requetes encore une boucle.
A la sortie ta fontion de donne la moyenne de chaques requetes.
-

sonikbuzz - WRInaute occasionnel

- Messages: 469
- Inscription: 21 Fév 2005
Pour en revenir a ta premiere question (j'ai édité mon 1er post) et comme le signale Netsys d'apres les tests que j'ai effectué se connecter à la base prend beaucoup de temp.
Donc je te conseille de l'ouvrir une fois avec mysql_connect et c'est tout : le link va se fermer en fin de script automatiquement.
Donc je te conseille de l'ouvrir une fois avec mysql_connect et c'est tout : le link va se fermer en fin de script automatiquement.
- papa6
- Nouveau WRInaute

- Messages: 19
- Inscription: 17 Oct 2007
Re:
Bonjour,
Ces infos m'intéressent : est-ce toujours d'actualité ? Et quand on dit ramer, ça veut dire des délais d'exécution multipliés par 1.5 ou 2, ou alors par 20 ou 100 (par ex.) ?
Parce qu'une requête à 3 tables, ce n'est pas grand chose, je comprendrais une requête sur 10 tables (et j'en fais
), mais 3 ou 4 ?
Merci pour l'info
finstreet a écrit:y'a des requetes à éviter... du genre des jointures à trois tables ou des INSERT SELECT... c le genre de trucs qui fait ramer
Ces infos m'intéressent : est-ce toujours d'actualité ? Et quand on dit ramer, ça veut dire des délais d'exécution multipliés par 1.5 ou 2, ou alors par 20 ou 100 (par ex.) ?
Parce qu'une requête à 3 tables, ce n'est pas grand chose, je comprendrais une requête sur 10 tables (et j'en fais
Merci pour l'info
-

ortolojf - WRInaute passionné

- Messages: 1673
- Inscription: 14 Aoû 2002
Re: Optimisation requêtes mysql
Et puis...
Pour la sécurité...
C'est *mal* de mettre ses données d'identification à la bdd dans des variables globales dans un script php, puis de faire un include de ce script dans les scripts, en mettant ces variables comme globales.
Les variables étant globales, c'est très facile à un hacker, pour peu qu'il sache les noms des variables globales, d'incorporer dans un include à un script sur son serveur http le script distant, puis de faire tout bonnement des echo des variables globales...
Il suffit pour cela, que le hacker ait configuré son serveur Apache et php pour qu'ils acceptent les fopen et include avec des urls distantes. Malheur !
Pour bien sécuriser ses données d'authentification à une base de données, il est bon de mettre celles-ci comme variables locales à des fonctions de connexion et/ou déconnexion, elles-mêmes écrites dans le script php qui sera inclus dans les scripts du site.
Le top du top, est d'effacer ces variables avant les fins des fonctions, pour bien faire...
Les variables d'authentification étant locales, ne seront pas du tout visibles à l'extérieur des fonctions. De toute manière, on ne peut pas appeler une fonction située dans un script distant inclus dans un include...
...Plusieurs précautions valent mieux qu'une.
Celà dit, si le serveur est mal configuré, il y a théoriquement des possibilités, aux autres webmaster d'autres comptes ftp ( mal configurés ) d'accéder en lecture à vos scripts... Hébergeurs maudits à fuir comme la peste !
Bien à vous.
Amicalement.
Jean-François Ortolo
Pour la sécurité...
C'est *mal* de mettre ses données d'identification à la bdd dans des variables globales dans un script php, puis de faire un include de ce script dans les scripts, en mettant ces variables comme globales.
Les variables étant globales, c'est très facile à un hacker, pour peu qu'il sache les noms des variables globales, d'incorporer dans un include à un script sur son serveur http le script distant, puis de faire tout bonnement des echo des variables globales...
Il suffit pour cela, que le hacker ait configuré son serveur Apache et php pour qu'ils acceptent les fopen et include avec des urls distantes. Malheur !
Pour bien sécuriser ses données d'authentification à une base de données, il est bon de mettre celles-ci comme variables locales à des fonctions de connexion et/ou déconnexion, elles-mêmes écrites dans le script php qui sera inclus dans les scripts du site.
Le top du top, est d'effacer ces variables avant les fins des fonctions, pour bien faire...
Les variables d'authentification étant locales, ne seront pas du tout visibles à l'extérieur des fonctions. De toute manière, on ne peut pas appeler une fonction située dans un script distant inclus dans un include...
...Plusieurs précautions valent mieux qu'une.
Celà dit, si le serveur est mal configuré, il y a théoriquement des possibilités, aux autres webmaster d'autres comptes ftp ( mal configurés ) d'accéder en lecture à vos scripts... Hébergeurs maudits à fuir comme la peste !
Bien à vous.
Amicalement.
Jean-François Ortolo
- papa6
- Nouveau WRInaute

- Messages: 19
- Inscription: 17 Oct 2007
Re: Optimisation requêtes mysql
En fait ma question concernait les requêtes aux imbrications multiples.
Mais là tu soulèves un autre sujet. En effet, il je fais appel à mes codes de connexion dans un fichier à part (include), et à la fin duquel je supprime mes données, sauf la connexion qui reste ouverte (unset($motdepasse, $moncompte, $etc);)
Par contre, tu vas me faire peur : j'ai un site genre wiki de programmation en ligne (on n'écrit pas une encyclopédie, mais du code PHP) sur lequel n'importe qui peut écrire n'importe quoi et tester en direct. Mon principal soucis était le spam via mon site (il suffit de créer un fichier de mailing). Mais pour l'instant, je l'ai protégé par mot de passe que je distribue après un échange de mèls avec n'importe quel demandeur.
(pour mémoire : chefdesventes.org)
Mais là tu soulèves un autre sujet. En effet, il je fais appel à mes codes de connexion dans un fichier à part (include), et à la fin duquel je supprime mes données, sauf la connexion qui reste ouverte (unset($motdepasse, $moncompte, $etc);)
Par contre, tu vas me faire peur : j'ai un site genre wiki de programmation en ligne (on n'écrit pas une encyclopédie, mais du code PHP) sur lequel n'importe qui peut écrire n'importe quoi et tester en direct. Mon principal soucis était le spam via mon site (il suffit de créer un fichier de mailing). Mais pour l'instant, je l'ai protégé par mot de passe que je distribue après un échange de mèls avec n'importe quel demandeur.
(pour mémoire : chefdesventes.org)
-

YoyoS - WRInaute accro

- Messages: 3835
- Inscription: 14 Sep 2006
Re: Optimisation requêtes mysql
papa6 a écrit:En fait ma question concernait les requêtes aux imbrications multiples.
Tu dois jouer avec les indexes sur les champs utilisés dans tes jointures pour accélérer tout ça. Après tu fais des tests, tu peux voir le temps que ça a pris en exécutant ta requête dans la console mysql> ou bien sur phpMyAdmin par exemple
- papa6
- Nouveau WRInaute

- Messages: 19
- Inscription: 17 Oct 2007
Re: Optimisation requêtes mysql
Oui, merci, c'est ce que je fais.
Mais c'était le nombre de "3 tables" qui m'a fait beaucoup me questionner (comme je disais, il m'arrive de temps en temps de faire des jointures sur une dizaine de tables simultanément.)
En plus des index, il faut aussi utiliser, particularité de MySQL, les types "ENUM" et "SET" (mais par paresse je ne le fais pas
et j'utilise une autre table avec jointure)
Mais c'était le nombre de "3 tables" qui m'a fait beaucoup me questionner (comme je disais, il m'arrive de temps en temps de faire des jointures sur une dizaine de tables simultanément.)
En plus des index, il faut aussi utiliser, particularité de MySQL, les types "ENUM" et "SET" (mais par paresse je ne le fais pas
16 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Optimisation requetes MySQL
- Mysql optimisation index/requêtes.
- [PHP/MySQL] Optimisation multiples requêtes
- MySQL : optimisation des requêtes sql
- optimisation de temps de reponse des requetes sql
- Requêtes MySQL programmées à XXhXX
- Proble Base Mysql et requetes
- Appréciation du bon nombre de requetes mysql ...
- [PHP] : compter le nombre de requêtes MySQL
- Lenteur connection et requetes mysql sous XP
- Gestion des langues et des sessions en PHP / MySQL
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Google rachète Widevine (optimisation vidéo et DRM)
- Nuage de tags Wordle pour WebRankInfo
- Passage à l'heure d'été/hiver sur un forum phpBB 3
- Optimiser le nombre de mots dans les textes de liens
- Ranking Metrics lance son blog
- Script de mise en cache des pages (PHP MySQL)
Consultez la description détaillée des produits ou services de Google suivants : Google Trends Recherche Personnalisée
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
