Sfruttano più risorse le query o le operazioni su stringhe tipo la funzione str_replace?
Mi spiego meglio:
Eseguo una query che estrapola 50 inserzioni dal mio database. Ognuna di queste inserzioni ha la propria url salvata in un'altra tabella del db.
Alla fine la mia funzione restituisce una stringa con tutte le inserzioni formattate html e relative url.
Escludo a priori di fare delle JOIN perchè per tabelle molto piene impiega parecchio tempo.
Ecco le 3 diverse possibilità che potrei applicare:
Premetto che questa è la funzione che mi restituisce l'url
Codice PHP:
function get_url($id){
$array_url = array();
$res_url = myQuery("SELECT * FROM `"._TBL_url_."` WHERE id= $id");
while ($row = mysql_fetch_array($res_url))
$array_url[$row['id']] = $row['url'];
return $array_url;
}
1)
Codice PHP:
#recupero le inserzioni
$query = "SELECT * FROM `"._TBL_inserzione_."` $where ORDER BY $ordina ".$limit;
$rec_post = myQuery($query);
while ($row = mysql_fetch_array($rec_post)) {
#eseguo 1 query per recuperare l'url (per ogni inserzione)
$link = get_url($row['id']);
$output .= '[url="'.$link.'"]'.$row['titolo'].'[/url]';
}
2)
Codice PHP:
#recupero le inserzioni
$query = "SELECT * FROM `"._TBL_inserzione_."` $where ORDER BY $ordina ".$limit;
$rec_post = myQuery($query);
while ($row = mysql_fetch_array($rec_post)) {
#memorizzo tutti gli id delle inserzioni di cui mi serve l'url
if(!isset($id_in)) $id_in = $row['id']; else $id_in .= ','.$row['id'];
#creo un riconoscimento univico dell'url {link_id}
#che utilizzerò per la funzione str_replace
$link = '{link_'.$row['id'].'}';
$output .= '[url="'.$link.'"]'.$row['titolo'].'[/url]';
}
#recupero tutte le url con un'unica query sfruttando la funzione 'IN' e l'insieme ID
$array_url = get_url($id_in);
#sostituisco i riconoscimenti univoci con l'url
foreach($array_url as $k => $val)
$output = str_replace ( '{link_'.$k.'}', $val, $output);
3)
Codice PHP:
#recupero le inserzioni
$query = "SELECT * FROM `"._TBL_inserzione_."` $where ORDER BY $ordina ".$limit;
$rec_post = myQuery($query);
while ($row = mysql_fetch_array($rec_post)){
#memorizzo tutti gli id delle inserzioni di cui mi serve l'url
if(!isset($id_in)) $id_in = $row['id']; else $id_in .= ','.$row['id'];
}
#recupero tutte le url con un'unica query sfruttando la funzione 'IN' e l'insieme ID
$array_url = get_url($id_in);
## eseguo un'altra volta il while
while ($row = mysql_fetch_array($rec_post)) {
#adesso ho già il link
$link = $array_url[$row['id']];
$output .= '[url="'.$link.'"]'.$row['titolo'].'[/url]';
}
Qual'è il metodo più veloce e meno dispendioso di risorse del server in base alle vostra conoscenze? C'è un metodo milgiore?
Grazie