Prøv følgende php script... Hastighedsforskellen vil være minimal med den hastighed mySQL foretager simple select statements. Så du burde kunne anvende nedenstående for at løse problemet
<php $sql = mysql_query(\"SELECT id FROM Picture WHERE Category=\'{$id}\'\"); $first = true; if (mysql_num_rows($sql)) { while ($foo = mysql_fetch_array($sql)) { if ($first) { $res = $foo[\"id\"]; $first = false; } else { $res .= \",\".$foo[\"id\"]; } } $deletesql = mysql_query(\"DELETE FROM Priority WHERE picture_id IN ($res)\"); } ?>
ikke testet...
ps. jeg går ud fra at du bruger det til et php script. ellers kan du oversætte semantikken til et andet sprog ...
Det er rigtigt ljweb, med én select og én delete, er der reelt ikke forskel i hastighed. Min første tanke var mange delete-r. MySql er iøvrigt så smart, at den sorterer tallene i IN-konstruktionen, og så laver en binær søgning (eller noget smartere hvis der er index på).
nej, det er sq da rigtigt, ingen subselects - jeg har en bog der påstår at det meste kan gøres som left joins istedet, men jeg har svært ved at se en join mellem select og delete...
takker for den simple men effektive løsning - jeg var igang med noget med at delete enkeltvis - det kunne min server ikke lide :)
aggie >> jeg har leget med leftjoins i nogle store og tunge queries og min erfaring viser at det utroligt ofte er *langt* hurtigere at fyre to select sætninger af...
tjaa, jeg har ranet en timer class fra et eller andet web sted, og agter at sætte mig ned med en ordentlig stor database og få nogle ordentlige tal på det her, ikke fordi jeg har vildt mange transaktioner, men selv med 5 simultane conenctions tager nogle joins over 5 sekunder at returnere, og så tør jeg ikke gætte på hvad der skete hvis det var mig der havde programmeret eksperten :)
Kan du i øvrigt sige mig hvorfor
DELETE FROM Priority WHERE picture_id = {$id}; DELETE FROM Picture WHERE id = {$id};
ikke kan skrives
DELETE FROM Priority,Picture WHERE Priority.picture_id = {$id} OR Picture.id = {$id}
Du skal passe på at det du joiner på er indexeret i begge tabeller - ellers tager det tid
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.