/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
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
Vælge felter indtil X antal sekunder
Fra : Martin


Dato : 16-05-07 10:43

Hej!

Jeg har en tabel med en 3-4000 rækker.
I den tabel har jeg nogle kolonner - 1 af kolonnerne er en length som er
en længde af filen skrevet i sekunder.

Nu vil jeg gerne vælge nogle rækker ud indtil længden er over 1800 sekunder.

Jeg tænkte noget i stil med
SELECT length AS newlength FROM ... WHERE length+newlength < 1800

DB: MySQL 4.1

 
 
Carsten Pedersen (16-05-2007)
Kommentar
Fra : Carsten Pedersen


Dato : 16-05-07 11:25

Martin wrote:
> Hej!
>
> Jeg har en tabel med en 3-4000 rækker.
> I den tabel har jeg nogle kolonner - 1 af kolonnerne er en length som er
> en længde af filen skrevet i sekunder.
>
> Nu vil jeg gerne vælge nogle rækker ud indtil længden er over 1800
> sekunder.
>
> Jeg tænkte noget i stil med
> SELECT length AS newlength FROM ... WHERE length+newlength < 1800
>
> DB: MySQL 4.1

SET @a:=0;
SELECT *, @a:=@a+length
FROM tblname
WHERE @a<1800

Dette kræver et fuldt gennemløb af tabellen ved hver forespørgsel,
så hvis du ikke forventer at finde mere end nogle få rækker før du
når til de 1800 bør du måske vælge en anden metode.

/ Carsten

Martin (16-05-2007)
Kommentar
Fra : Martin


Dato : 16-05-07 13:01

Carsten Pedersen wrote:
> Dette kræver et fuldt gennemløb af tabellen ved hver forespørgsel,
> så hvis du ikke forventer at finde mere end nogle få rækker før du
> når til de 1800 bør du måske vælge en anden metode.

Jeg regner kun med at få en 10-20 resultater inden de 1800 sekunder er nået.

Og på en tabel som vokser temmelig stærkt (vokset med 2000 rækker inden
for 2 uger) dog er det noget der skal køres via cronjob - så hastigheden
er nok ikke vildt afgørende.

Dog skal cronjobbet køres ca. hvert 10. minut - så nok ikke den mest
optimale løsning

Peter Brodersen (16-05-2007)
Kommentar
Fra : Peter Brodersen


Dato : 16-05-07 14:08

On Wed, 16 May 2007 14:01:09 +0200, Martin <maaNO@SPAMscandesigns.dk>
wrote:

>> Dette kræver et fuldt gennemløb af tabellen ved hver forespørgsel,
>> så hvis du ikke forventer at finde mere end nogle få rækker før du
>> når til de 1800 bør du måske vælge en anden metode.
>
>Jeg regner kun med at få en 10-20 resultater inden de 1800 sekunder er nået.
>
>Og på en tabel som vokser temmelig stærkt (vokset med 2000 rækker inden
>for 2 uger) dog er det noget der skal køres via cronjob - så hastigheden
>er nok ikke vildt afgørende.

Der er lidt en lignende problemstilling i indlægget
<news:f208ji$2k2$1@news.klen.dk>

Du kan overveje at flytte logikken over i applikationen. Derudover kan
du så hive fx 10 ud ad gangen, eller have en anden øvre grænse, fx
blot de 50 nyeste (begrænsning med LIMIT eller WHERE).

--
- Peter Brodersen
Kendt fra Internet

Martin (16-05-2007)
Kommentar
Fra : Martin


Dato : 16-05-07 16:38

Peter Brodersen wrote:
> Du kan overveje at flytte logikken over i applikationen. Derudover kan
> du så hive fx 10 ud ad gangen, eller have en anden øvre grænse, fx
> blot de 50 nyeste (begrænsning med LIMIT eller WHERE).

Oki - præcis som jeg også gør nu.

Jeg ville bare optimere mine queries, for at lære noget mere SQL også
måske vinde lidt performance (ikke fordi det har betydning på nuværende
tidspunkt, men bedre nu, end hvor det går helt galt :)

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste