Mycket flitig postare
|
|
Reg.datum: Oct 2004
Inlägg: 898
|
|
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.
|