Jump to content
php.lv forumi

2 vaicājumu optimizēšana


ray

Recommended Posts

ir šāda kods:

<?php
$sql = mysql_query("SELECT * FROM tabula_1");
if (mysql_num_rows($sql) > 0) {
?>
Virsraksts
<?php
}
$sql = mysql_query("SELECT * FROM tabula_1");
while($row = mysql_fetch_array($sql)) {
echo $row["lauks_1"]." ".$row["lauks_2"]."<br />";
}
?>

kodā tiek veikti 2 pieprasījumi/vaicājumi uz datu bāzi, vai šādu variantu var optimizēt?

Edited by ray
Link to comment
Share on other sites

Jā.

 

<?php
if ($sql = mysql_query("SELECT lauks_1, lauks_2 FROM tabula_1")) {
?>
Virsraksts
<?php
while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
echo $row["lauks_1"]." ".$row["lauks_2"]."<br />";
}
}
?>

Link to comment
Share on other sites

mysql_num_rows ir salīdzinoši daudz lēnāks par vienkārši mainīgā palielināšanu, nekad neizmantot * :), kā arī pēc dotajiem piemēriem nav jēgas izmantot fetch_array, ja piekļūstam vērtībām tikai ar kollonas nosaukumu. Šeit pietiek ar fetch_assoc, es darītu šādi:

 

<?PHP
$i = 0; 
$query = mysql_query('SELECT lauks_1, lauks_2 FROM tabula_1');
while($row = mysql_fetch_assoc($query)) {
++$i;
if($i === 1) { echo 'Virsraksts'; }

echo $row['lauks_1'],' ',$row['lauks_2'],'<br />';
}
?>

 

Tāpat iesaku, nekad neveidot divus identiskus querijus. Labāk pirmā querija atgrieztos datus ielikt array un tad vērsties pie array. Jo gandrīz vienmēr datubāze ir tas elements, kas visvairāk bremzē ātrumu un vērsties pie array būs salīdzinoši ātrāk.

Link to comment
Share on other sites

×
×
  • Create New...