/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
UPDATE og SELECT i samme query
Fra : bba
Vist : 1404 gange
100 point
Dato : 14-10-07 15:43

Jeg forsøger at optimere et PERL script der opdatere og derefter selecter fra samme tabel.

Tabellen har en størelse på ca 500.000 - 1 mill record

Processen med UPDATE og herefter SELECT tager ca. 1 sekund pr. transaktion.

Der benyttes PERL, ODBC samt MSSQL.

Hvis jeg fjerner SELECT statement, halveres DB tiden, og fjerner jeg UPDATE går det rigtigt stærkt.

Er der nogle der har nogle forslag til en query string der samler de 2 queryes eller andet der kan gøre denne process hurtigere ??

CODE START
-----------------------------------------------------
$sth = $dbh->prepare("UPDATE tabel1 SET xx = '$status'
       WHERE yy = '$id'");
$sth->execute;

$sth = $dbh->prepare("SELECT aa,bb FROM tabel1
       WHERE yy = '$id'");
$sth->execute;

($aa,$bb) = $sth->fetchrow;
-----------------------------------------------------
CODE END

Mvh, Brian Birkedal


 
 
Accepteret svar
Fra : pmbruun

Modtaget 100 point
Dato : 14-10-07 18:50

Sørg for at sætte indeks på kolonnen Id. Så bør både select og update gå meget hurtigere.

En anden mulighed var at bruge en cursor. Så kan du først selecte din række og få en cursor til resultatet. Den fundne række kan så updates gennem cursoren.

Jeg er dog ikke sikker på, om denne mulighed er tilgængelig gennem Perls interface til ODBC. Det må du selv lige checke.

Under alle omstændigheder, skal du sikre dig at du har indekset på plads - det er det vigtigste.

M.v.h.

Peter


Godkendelse af svar
Fra : bba


Dato : 14-10-07 21:30

Tak for svaret pmbruun.

Som besvarelse kan nævnes at før indexsering kunne jeg performe 1/s nu 50/s

Indexseringen to 1 minut .. waauuu ..

Super tak for hjælpen ...

Kommentar
Fra : bba


Dato : 15-10-07 11:50

Lige et enkelt tillægs spg. som ikke giver point.

Når man nu laver INDEX på sine tabeller for hurtigere UPDATE og SELECT, har det vel omvendt den betydning at INSERT bliver lidt langsommere for hver record, da INDEX ligeledes opdateres ??

Eller er jeg helt galt på den ??

Mvh, Brian Birkedal

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409070
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste