Ik vraag me af wat qua prestaties/snelheid het beste is.
Ik heb een database met (250.000) foto's van auto's en iedere foto is gekoppeld aan een merk, model en evt. type
nu heb ik dus ong. de volgende tables:
table: car_pics
table: car_makes
table: car_models
table: car_types (bijna idem als car_models)
nu mijn vraag:
ik bewaar momenteel alle car_makes, car_models en car_types in een sessie array.
Zodra een nieuwe sessie wordt geopend doe ik namelijk het volgende:
zodat ik die dus niet telkens opnieuw uit de database hoef te halen, maar gewoon dmv
$_SESSION['makes'][$make_id] kan aanroepen. (want geloof me ik moet die namen heeeeel vaak uit de database halen)
is dit slim? of kan ik beter gewoon telkens opnieuw dmv left joins ook meteen de make_naam en model en type uit de database halen.
dus bijv:
graag jullie opinie...
btw. het zijn
59 makes/merken
585 modellen
0 types (maar dat worden er ook wel minimaal 1000 denk ik)
Ik heb een database met (250.000) foto's van auto's en iedere foto is gekoppeld aan een merk, model en evt. type
nu heb ik dus ong. de volgende tables:
table: car_pics
pic_id | foto | make | model | type |
1 | volkswagen_golf.jpg | 3 | 2 | |
2 | opel_zafira.jpg | 1 | 1 | |
3 | audi_a4.jpg | 2 | 3 |
table: car_makes
make_id | make_name |
1 | opel |
2 | audi |
3 | volkswagen |
table: car_models
model_id | make_id | model_name |
1 | 1 | zafira |
2 | 3 | golf |
3 | 2 | a4 |
table: car_types (bijna idem als car_models)
nu mijn vraag:
ik bewaar momenteel alle car_makes, car_models en car_types in een sessie array.
Zodra een nieuwe sessie wordt geopend doe ik namelijk het volgende:
PHP:
1
2
3
4
5
6
| $q = mysql_query("SELECT * FROM car_makes ORDER BY make_name ASC"); while($r = mysql_fetch_assoc($q)){ $_makes[$r['uin']] = $r['naam']; } $_SESSION['makes'] = $_makes; // en dan het bovenstaand ook voor models en types. |
zodat ik die dus niet telkens opnieuw uit de database hoef te halen, maar gewoon dmv
$_SESSION['makes'][$make_id] kan aanroepen. (want geloof me ik moet die namen heeeeel vaak uit de database halen)
is dit slim? of kan ik beter gewoon telkens opnieuw dmv left joins ook meteen de make_naam en model en type uit de database halen.
dus bijv:
code:
1
2
3
| // SELECT p.*,m.make_name as make,m2.model_name as model,t.type_name as type FROM pics p LEFT JOIN car_makes m ON m.make_id=p.make LEFT JOIN car_models m2 ON m2.model_id=p.model LEFT JOIN car_types t ON t.type_id=p.type WHERE p.pic_id=$_GET['id'] LIMIT 1 // |
graag jullie opinie...
btw. het zijn
59 makes/merken
585 modellen
0 types (maar dat worden er ook wel minimaal 1000 denk ik)