Modérateur PHPfrance |
10684 Messages
08 mai 2009, 10:03
Le plus performant est naturellement de tout restocker dans un champ date et d'utiliser les fonctions de comparaison qui vont bien

.
Toute autre solution sql va impliquer un calcul pour chaque enregistrement et sera naturellement plus lourd... Je te recommande par exemple d'éviter le NOW() et de spécifier la valeur de la date en php (donc en dur dans la requête) pour éviter qu'il ne le recalcul à chaque fois.
Pour limiter les opérations faites par Mysql, je pense que tu dois pouvoir faire une comparaison du genre :
$sql = 'SELECT ...
WHERE
CONCAT(AnneeNaissance,MoisNaissance,JourNaissance) >= '.$dateInf.'
AND
CONCAT(AnneeNaissance,MoisNaissance,JourNaissance) <= '.$dateSup.'
...';
//Avec
$dateInf = (date('Y') - 45) . date('md');
$dateSup = (date('Y') - 25) . date('md');
Au final, on ne compare que des chaines et on est pas obligés de tester si la date existe, ça fait toujours ça de moins

Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...