MySQL : Augmenter la rapidité d'affichage
Pascal_22
Messages postés
559
Statut
Membre
-
Pascal_22 Messages postés 559 Statut Membre -
Pascal_22 Messages postés 559 Statut Membre -
Bonjour,
J'ai une question concernant la rapidité d'affichage des infos pris dans une base de donnée MySQL.
Je possede un table nommé 'Profils', qui contient les infos des membres, avec comme champs, IdPays, IdProvince, IdSexe ..... Bref beaucoup de champs numéric pour garder les id.
Lorsqu'on visualise la page profil d'un membres, je récupère le id et j'appel un fonction pour chaque id qui va récupéré la description de l'id(ex. Nom du pays)
voici un example:
while($row = mysql_fetch_row($MonProfil))
{
//je récupere les id
$idPays= $row[1];
$idProvince= $row[2];
$idSexe= $row[3];
.....
}
Et ensuite je récupere la description par une fontion qui fait appel a un autre table (pays,provinces, sexe ...)
NomPays = TrouverNomPays($idPays);
NomProvince = TrouverNomPays($idProvince);
DescSexe = TrouverNomPays($idSexe);
... et plusieurs autre comme ca
Ma question est : Est-ce que ça ralentit l'affichage dfe la page?? Car je fait beaucoup de demandes à la base de donnée.
Devrais-je a la place garder dans ma table Profils les ID avec leurs nom afin d'augmenter la rapidité de l'affichage??
Bien sur, que je ferais mon select sur les ID mais j'afficherai seulement les Nom(description de l'id)
Merci de votre aide!!
J'ai une question concernant la rapidité d'affichage des infos pris dans une base de donnée MySQL.
Je possede un table nommé 'Profils', qui contient les infos des membres, avec comme champs, IdPays, IdProvince, IdSexe ..... Bref beaucoup de champs numéric pour garder les id.
Lorsqu'on visualise la page profil d'un membres, je récupère le id et j'appel un fonction pour chaque id qui va récupéré la description de l'id(ex. Nom du pays)
voici un example:
while($row = mysql_fetch_row($MonProfil))
{
//je récupere les id
$idPays= $row[1];
$idProvince= $row[2];
$idSexe= $row[3];
.....
}
Et ensuite je récupere la description par une fontion qui fait appel a un autre table (pays,provinces, sexe ...)
NomPays = TrouverNomPays($idPays);
NomProvince = TrouverNomPays($idProvince);
DescSexe = TrouverNomPays($idSexe);
... et plusieurs autre comme ca
Ma question est : Est-ce que ça ralentit l'affichage dfe la page?? Car je fait beaucoup de demandes à la base de donnée.
Devrais-je a la place garder dans ma table Profils les ID avec leurs nom afin d'augmenter la rapidité de l'affichage??
Bien sur, que je ferais mon select sur les ID mais j'afficherai seulement les Nom(description de l'id)
Merci de votre aide!!
A voir également:
- MySQL : Augmenter la rapidité d'affichage
- Mysql community download - Télécharger - Bases de données
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
- Le paquet « mysql-server » n'a pas de version susceptible d'être installée ✓ - Forum Debian
- Access vs mysql - Forum Webmastering
7 réponses
Forcément, moins tu feras de requêtes à MySQL, plus vite ça ira.
Je ne vois pas vraiment l'intérêt de stocker les pays et les sexes dans une base de données : il n'y en a pas qui vont s'ajouter tous les jours.
Perso, j'utilise un array qui contient tous les pays.
Sur la page pour modifier le compte, je génère une liste à partir de cet array.
Lorsque l'utilisateur enregistre, je vérifie que le choix fait dans la liste existe bien dans mon array (on peut facilement modifier le HTML et y ajouter nos codes, alors pour éviter que quelqu'un mette n'importe quel pays ...).
Je ne vois pas vraiment l'intérêt de stocker les pays et les sexes dans une base de données : il n'y en a pas qui vont s'ajouter tous les jours.
Perso, j'utilise un array qui contient tous les pays.
Sur la page pour modifier le compte, je génère une liste à partir de cet array.
Lorsque l'utilisateur enregistre, je vérifie que le choix fait dans la liste existe bien dans mon array (on peut facilement modifier le HTML et y ajouter nos codes, alors pour éviter que quelqu'un mette n'importe quel pays ...).
wow !! ok merci pour la réponse avion-f16,
Je trouve cela intelligent la façon que tu fais!!
Comme moi par exemple, j'ai une table Pays et un table province avec un FkPays dans la table province.
Donc si je comprend ta façon, tu aurrais un array arrayPays et au autre array arrayProvince ?
J'imagine que le tableau (array) province devra être 2 dimesions(pour stocker le nom de la province et fkpays corespondant)
Est-ce que j'ai bien compris?
Et en même temps, est-ce que de lire dans un array est plus rapide que de lire dans une table(même avec index) ???
Merci!
pascal_22
Je trouve cela intelligent la façon que tu fais!!
Comme moi par exemple, j'ai une table Pays et un table province avec un FkPays dans la table province.
Donc si je comprend ta façon, tu aurrais un array arrayPays et au autre array arrayProvince ?
J'imagine que le tableau (array) province devra être 2 dimesions(pour stocker le nom de la province et fkpays corespondant)
Est-ce que j'ai bien compris?
Et en même temps, est-ce que de lire dans un array est plus rapide que de lire dans une table(même avec index) ???
Merci!
pascal_22
Un array suffit.
Regarde cet exemple :
Regarde cet exemple :
$pays = array( 'Belgique' => array( 'Hainaut', 'Limbourg', 'Luxembourg', 'Brabant Wallon', 'Brabant Flamand', // ... ), 'France' => array( 'Nord-Pas-de-Calais', 'Drôme', 'Haute-Corse', 'Isère', 'Oise', // ... ), // Autres pays );Pour vérifier si un pays existe :
<?php
if(array_key_exists($_POST['pays'], $pays)) {
echo $_POST['pays'].' est dans la liste';
} else {
echo $_POST['pays'].' n\'est pas dans la liste';
}
?>Pour vérifier si une province existe dans un pays :<?php
$paysChoisis = $_POST['pays'];
if(in_array($_POST['province'], $pays[$paysChoisis])) {
echo 'La province '.$_POST['province'].' existe en '.$paysChoisis;
} else {
echo 'La province '.$_POST['province'].' n\'existe pas en '.$paysChoisis;
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut avion-f16,
Merci beaucoup pour cet exemple, il très bien expliqué et je figure déja mieux ce que je dois faire.
Une question me chicotte encore. Dans ma table profil, je garde le idpays et le idprovince en champs numérique, car lors d'une requete, la requete s'éfectue plus vite su dans le where on a des critères sur des champs numérique que sur des champs texte(varchar). Donc es-tu d'Avis avec ce que je dit??
Et ce qui me chicotte, c'est comment inséré un id dans le array pour qu'avec le idpays garder dans la table profil je puisse récupéré le nom pays et qu'avec le idprovince je puisse récupéré le nom de la province.... de dedans le array ... ???
Je me lance dans un petit test...$pays = array(
idPays, 'Belgique' => array(
id, 'Hainaut',
id, 'Limbourg',
id, 'Luxembourg',
id, 'Brabant Wallon',
id, 'Brabant Flamand',
// ...
),
idPays, 'France' => array(
id, 'Nord-Pas-de-Calais',
id, 'Drôme',
id, 'Haute-Corse',
id, 'Isère',
id, 'Oise',
// ...
),
Est-ce possible de le faire avec un array??
Et là supposons que je dois récupérer le pays et la province avec comme idPays=16 et idProvince=30 ......
$Nomprovince = $pays[16][30] .... ouf pas sure ...
as-tu une idée?
MErci beaucoup de ton aide!
Pascal_22
Merci beaucoup pour cet exemple, il très bien expliqué et je figure déja mieux ce que je dois faire.
Une question me chicotte encore. Dans ma table profil, je garde le idpays et le idprovince en champs numérique, car lors d'une requete, la requete s'éfectue plus vite su dans le where on a des critères sur des champs numérique que sur des champs texte(varchar). Donc es-tu d'Avis avec ce que je dit??
Et ce qui me chicotte, c'est comment inséré un id dans le array pour qu'avec le idpays garder dans la table profil je puisse récupéré le nom pays et qu'avec le idprovince je puisse récupéré le nom de la province.... de dedans le array ... ???
Je me lance dans un petit test...$pays = array(
idPays, 'Belgique' => array(
id, 'Hainaut',
id, 'Limbourg',
id, 'Luxembourg',
id, 'Brabant Wallon',
id, 'Brabant Flamand',
// ...
),
idPays, 'France' => array(
id, 'Nord-Pas-de-Calais',
id, 'Drôme',
id, 'Haute-Corse',
id, 'Isère',
id, 'Oise',
// ...
),
Est-ce possible de le faire avec un array??
Et là supposons que je dois récupérer le pays et la province avec comme idPays=16 et idProvince=30 ......
$Nomprovince = $pays[16][30] .... ouf pas sure ...
as-tu une idée?
MErci beaucoup de ton aide!
Pascal_22
Pour les tableaux simples (pas ceux à double entrées), il y a un nombre qui lui est associé. $array[0] correspond à la première entrée.
Je pense que le plus simple est de passer ton champ en un champ texte (CHAR, VARCHAR, BLOB, TEXT, ...), même si tu perds quelques millisecondes.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Je pense que le plus simple est de passer ton champ en un champ texte (CHAR, VARCHAR, BLOB, TEXT, ...), même si tu perds quelques millisecondes.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.