Visa ett inlägg
Oläst 2006-12-01, 22:37 #2
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Nu skriver du ju inte vilken databas du använder... Oracle har just det du söker... Men jag antar att du använde MySQL och då finns tyvärr ingen hjälp. Ett alternativ till att köra med en subqueary som gör count(*) 500.000 gånger så [i]kanske[/] du tjänar på att istället ha en "ranking" kollumn som du uppdaterar.

Exempel:
Om du idag har en tabell med kolumnerna id,name,points
Så ändra så den har kolumnerna id,name,points,ranking

"Tillräckligt ofta" kör du sedan ett script som gör:
select id from table order by points DESC
Räkna rad och kör: update table set ranking = row_iterator where id=row_id

Om detta blir snabbare än en gigantisk subquery kan bara tester avgöra, men det är ju ett alternativ som spar prestanda varje gång du skall ha ut rankingsnummer. och med ett index på points bör det gå ganska snabbt att jobba sig igenom alla poster. Företrädelsevis kör du dessutom loopen som en stored procedure om du har möjlighet.
eg0master är inte uppkopplad   Svara med citatSvara med citat