Jump to content
php.lv forumi

sql vaicājums


ray

Recommended Posts

Vai ir iespējams šo vaicājumu/php skriptu optimizēt?

 

$query  = "SELECT * FROM tabula WHERE lauks = 1";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)
{
$query_2 = "UPDATE tabula SET lauks = 0 WHERE id = ".$row["id"]."";
mysql_query($query_2);
}

Link to comment
Share on other sites

ja, piem šita:

$query  = "SELECT * FROM tabula WHERE lauks = 1";
$result = mysql_query($query);

$sql = '';

while($row = mysql_fetch_array($result)
{
$sql .= 'id = \''.$row['id'].'\' OR ';
}

if ($sql != '')
{
$sql = substr($sql, 0, -3);
$query_2 = 'UPDATE tabula SET lauks = 0 WHERE '.$sql;
mysql_query($query_2);
}

Edited by dmitriy
Link to comment
Share on other sites

$result = mysql_query('SELECT * FROM tabula WHERE lauks = 1');
$ids = array();
while($row = mysql_fetch_array($result))
$ids[] = $row["id"]

if(count($ids) > 0)
mysql_query('UPDATE tabula SET lauks = 0 WHERE id in('.join(','$ids).')');

Edited by v3rb0
Link to comment
Share on other sites

dmitriy un v3rbo varianti ir potenciālās vaboles - izkritīs uz max-sql-length. Es pat teiktu topika autora variants pareizs, ja vien vajag darīt kaut ko pa vidu PHP-specifisku (a ja nu `izlido` ārā kaut kas)

 

Vai tiešām no SQL pamatiem nevar atcerēties primitīvos vaicājumus? Update taisa ne tikai pēc id, un var rēķināt uzreiz i visu ko citu pārveidot.

Jebkurā skolā/e-bookā to māca.

Link to comment
Share on other sites

diez vai šinī gadījumā ir tik daudz datu, ka ar idiem var iedzīvoties max sql garumā

A tu padomā no sql optimaizera puses.. ko tu vinam baro un kāds būs `execution plan`

 

PS: par to sql-garumu - es arī vienreiz tā domāju, līdz iestājās šis brīdis :) Tad nākas visu pārtaisīt.

Link to comment
Share on other sites

kādā ziņā sarežģīti?

man šītā pat liekas vienkāršāk.. viens kverijs - dabū kaut kādus idus; otrs kverijs - izmantojot pirmā kverija rezultātu. iepīt "dauzus otros kverijus" iekš pirmā kverija rezultāta fečošanas taisi ir piņķerīgak, ja vēlāk vajag kaut ko pārtaisīt pa 180 grādiem, vai arī uzrodas vēl trešais kverijs.

Link to comment
Share on other sites

×
×
  • Create New...