|
| 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 :)
| |
|
|