Jump to content
php.lv forumi

Recommended Posts

Posted

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);
}

Posted (edited)

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
Posted (edited)
$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
Posted

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.

Posted

diez vai šinī gadījumā ir tik daudz datu, ka ar idiem var iedzīvoties max sql garumā, un ja nu tomēr, tad pieliks kaunteri, kas limitēs cik idus vienā piegājienā apstrādāt.

Posted
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.

Posted

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.

Posted

nu vismaz es nepamanīju, ka šis vienu un to pašu tabulu grib updeitot. padomāju ka ja prasa, tad prasa kaut ko sarežģītāku.. eh.

Posted

v3rb0, webā pieturies pie viedokļa - jo īsāk, jo labāk. Un arī nevajag skriet pa priekšu izdomāt hvz kādus algoritmus, ja tie nav vēl paredzēt. Kad vajadzēs, vot tad arī uztaisīs.

×
×
  • Create New...