ray Posted August 16, 2007 Report Share Posted August 16, 2007 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 More sharing options...
dmitriy Posted August 16, 2007 Report Share Posted August 16, 2007 (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 August 16, 2007 by dmitriy Link to comment Share on other sites More sharing options...
v3rb0 Posted August 16, 2007 Report Share Posted August 16, 2007 (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 August 16, 2007 by v3rb0 Link to comment Share on other sites More sharing options...
andrisp Posted August 16, 2007 Report Share Posted August 16, 2007 Es kaut ko nesaprotu, vai arī vienkārši šādi: UPDATE tabula SET lauks = 0 WHERE lauks = 1 Link to comment Share on other sites More sharing options...
bubu Posted August 16, 2007 Report Share Posted August 16, 2007 Var vienkārši tā. Var un vajag! Link to comment Share on other sites More sharing options...
Delfins Posted August 16, 2007 Report Share Posted August 16, 2007 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 More sharing options...
andrisp Posted August 16, 2007 Report Share Posted August 16, 2007 Delfins, par kādām "skolām" tu runā ? Tādām īstām no ķieģeliem un cementa ? :) Link to comment Share on other sites More sharing options...
v3rb0 Posted August 16, 2007 Report Share Posted August 16, 2007 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. Link to comment Share on other sites More sharing options...
andrisp Posted August 16, 2007 Report Share Posted August 16, 2007 v3rb0, bet vai ir jēga tā visu sarežģīt ? Protams, ja pa starpām vēl (kā jau Delfins norādīja) kaut kas jādara, ko var tikai ar PHP. Link to comment Share on other sites More sharing options...
Delfins Posted August 16, 2007 Report Share Posted August 16, 2007 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 More sharing options...
v3rb0 Posted August 16, 2007 Report Share Posted August 16, 2007 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 More sharing options...
bubu Posted August 16, 2007 Report Share Posted August 16, 2007 Drīkst uzzināt, ar ko jūsu cikli ir labāki par andra vienu updeitu? Link to comment Share on other sites More sharing options...
v3rb0 Posted August 16, 2007 Report Share Posted August 16, 2007 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. Link to comment Share on other sites More sharing options...
Delfins Posted August 16, 2007 Report Share Posted August 16, 2007 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. Link to comment Share on other sites More sharing options...
Aleksejs Posted August 16, 2007 Report Share Posted August 16, 2007 Pirmajā SQLā pietiek tikai ar atgrieztiem id, manuprāt. Tātad: SELECT id FROM tabula WHERE lauks = 1 Link to comment Share on other sites More sharing options...
Recommended Posts