Améliorer la rapidé d'une requete
Posté : 22 mai 2017, 15:41
Bonjour à toutes et à tous !
Voila j'ai un code qui fonctionne bien cependant ma page mais longtemps à s'affiché ( temps de réponse lent 4 à 5 sec)
Donc vous voyez le problème.
Voici ma requete elle me permet en gros d'affiché mes entrées selon ville, departement, région .... parmis environ 5000 résultats.
Que puis je faire de mieux ?
PS : J'affiche 24 résultat à la fois
Merci à vous
EDIT:
Je ne pense pas que ça vient de ça mais voici ma pagination ( peut etre un peu barbare je l'avoue )
Voila j'ai un code qui fonctionne bien cependant ma page mais longtemps à s'affiché ( temps de réponse lent 4 à 5 sec)
Donc vous voyez le problème.
Voici ma requete elle me permet en gros d'affiché mes entrées selon ville, departement, région .... parmis environ 5000 résultats.
$sql = 'SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1';
if (!empty($_GET['region'])) {
$sql .= ' AND regions.url = \''.$_GET['region'].'\'';
}
if (!empty($_GET['departement'])) {
$sql .= ' AND loisirs.id_departements = '.$_GET['departement'];
}
if (!empty($_GET['loisir'])) {
$sql .= ' AND loisirs.genre_loisir = \''.$_GET['loisir'].'\'';
}
if (!empty($_GET['ville'])) {
$sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
}
J'ai donc essayé de supprimer * est de remplacé uniquement par les champs demandé .... mais ça ne suffit pas.Que puis je faire de mieux ?
PS : J'affiche 24 résultat à la fois
Merci à vous
EDIT:
Je ne pense pas que ça vient de ça mais voici ma pagination ( peut etre un peu barbare je l'avoue )
// Valeur de pagination
if (empty($_GET['region']) && empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])){
$valeur_paginate = 'sortie';
}
// Si il n y a que la région de demandée
else if (!empty($_GET['region']) && empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])){
$valeur_paginate = 'region-'.$_GET['region'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['region']) && !empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])) {
$valeur_paginate = 'region-'.$_GET['region'].'-loisir-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (empty($_GET['region']) && !empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])) {
$valeur_paginate = 'type-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['departement']) && empty($_GET['loisir']) && empty($_GET['ville'])) {
$valeur_paginate = 'departement-'.$_GET['departement'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['departement']) && !empty($_GET['loisir']) && empty($_GET['ville'])) {
$valeur_paginate = 'departement-'.$_GET['departement'].'-loisir-'.simplification($_GET['loisir']);
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['loisir']) && !empty($_GET['ville']) && empty($_GET['departement'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']).'-loisir-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (empty($_GET['region']) && !empty($_GET['ville']) && empty($_GET['departement']) && empty($_GET['loisir'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']);
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['ville']) && !empty($_GET['loisir'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']).'-loisir-'.simplification($_GET['loisir']);
}
// Pagination
$parPage = 12;
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$nbre_annonces_par_page = 12;
$nbre_pages_max_gauche_et_droite = 3;
$last_page = ceil($nb / $nbre_annonces_par_page);
if(isset($_GET['page']) && is_numeric($_GET['page'])){
$page_num = $_GET['page'];
} else {
$page_num = 1;
}
if($page_num < 1){
$page_num = 1;
} else if($page_num > $last_page) {
$page_num = $last_page;
}
$limit = 'LIMIT '.($page_num - 1) * $nbre_annonces_par_page. ',' . $nbre_annonces_par_page;
$pagination = '';
if($last_page != 1){
if($page_num > 1){
$previous = $page_num - 1;
$pagination .= '<li><a href="'.$valeur_paginate.($previous > 1 ? '-page-'.$previous : null).'.html">Prec</a></li> ';
for($i = $page_num - $nbre_pages_max_gauche_et_droite; $i < $page_num; $i++){
if($i > 0){
$pagination .= '<li><a href="'.$valeur_paginate.($i > 1 ? '-page-'.$i : null).'.html">'.$i.'</a></li> ';
}
}
}
$pagination .= '<li class="page-active">'.$page_num.'</li> ';
for($i = $page_num+1; $i <= $last_page; $i++){
$pagination .= '<li><a href="'.$valeur_paginate.'-page-'.$i.'.html">'.$i.'</a></li> ';
if($i >= $page_num + $nbre_pages_max_gauche_et_droite){
break;
}
}
if($page_num != $last_page){
$next = $page_num + 1;
$pagination .= '<li><a href="'.$valeur_paginate.'-page-'.$next.'.html">Suiv</a><li> ';
}
}