[CakePHP] Requête trop longue
Posté : 22 janv. 2012, 20:12
Bonsoir,
J'ai décidé de faire mon site avec le Framework cakephp et pour l'instant je galère un peu.
J'ai un petit problème avec une requête qui est un peu longue à charger, je m'explique :
J'ai un controller PrevisionsController.php où j'effectue cette requête :
La structure de la table :
ID, LAT, LONG, DATA1,DATA2, [...], DATA80
Sachant que les champs LAT et LONG sont indexés
Ma requête me donne un résultat sous cette forme là :
Cependant l'affichage n'est pas instantané et m'est environ 5,5secondes à charger toute les données.
Donc je voulais savoir si c'est possible d'améliorer ma requête pour que l'affichage soit instantané car la je bloque un peu.
Codialement,
Ludovic
J'ai décidé de faire mon site avec le Framework cakephp et pour l'instant je galère un peu.
J'ai un petit problème avec une requête qui est un peu longue à charger, je m'explique :
J'ai un controller PrevisionsController.php où j'effectue cette requête :
for($i=1;$i < 121;$i++){
$this->Prevision->setSource("data_".$i."");
//On déclare les différentes variables ici
$params_ville = $this->params['url'];
if($params_ville['lon'] < 0){
$_long = $params_ville['lon']+ 360;
$_lat = $params_ville['lat'];
}else{
$_long = $params_ville['lon'];
$_lat = $params_ville['lat'];
}
$result = $this->Prevision->find('all',array(
'order' => 'SQRT(POW(`LAT`-'.$_lat.',2)+POW(`LONG`-'.$_long.',2)) ASC',
'limit' => '1'));
$data[$i] = $result['0']['Prevision'];
$this->set('data',$data);
$this->set('ville',$params_ville);
}
Je possède donc une base de donnée avec 120 tables (échéance), chaque table comportant 80 champs et contenant 14 763 lignes. Toute les structures des tables sont identique excepter les données à l'intérieure.La structure de la table :
ID, LAT, LONG, DATA1,DATA2, [...], DATA80
Sachant que les champs LAT et LONG sont indexés
Ma requête me donne un résultat sous cette forme là :
Array
(
[1] => Array ------------------------> Correspond à l'échéance
(
[ID] => 3049
[LONG] => 359.979762
[LAT] => 42.968525
[DATA1] => -0.024
[DATA2] => 23.227
[...] => ....
[DATA80] => -0.000375977
)
)
Après je n'ai plus qu'à récupérer mes données dans la vue sous cette forme là : $data['1']['DATA2'].Cependant l'affichage n'est pas instantané et m'est environ 5,5secondes à charger toute les données.
Donc je voulais savoir si c'est possible d'améliorer ma requête pour que l'affichage soit instantané car la je bloque un peu.
Codialement,
Ludovic