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