durchnummerierung optimieren

heyho

hab prinzipiell folgede tabelle:

Code:
CREATE TABLE IF NOT EXISTS `uptime` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `pc_id` int(10) unsigned NOT NULL,
  `start` int(10) unsigned NOT NULL,
  `last` int(10) unsigned NOT NULL default '0',
  `active` tinyint(1) unsigned NOT NULL default '1',
  `uptime` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `last` (`last`)
)

wenn ich jetzt die ganze liste an uptimes haben möchte, allerdings nur die, die active = 1 sind ist eine durchnummerierung ja kein problem. wenn ich das ganze einfach nach uptime sortiere und anschliesend in php ne variable hochzähle.

wenn ich jetzt aber von einem user und deren rechner die uptimes undplazierung haben will mach ich das bisher so:

Code:
SELECT <hauen zeug>,(select count(id) from uptime where uptime > u.uptime and active = 1)+1 as rank
                  FROM pc as p
                  left outer JOIN uptime as u ON p.id = u.pc_id
                  WHERE p.user_id = '$id' and (u.active = 1 OR u.active is NULL)

das problem hierbei is der subselect.
wenn ich nun nen user mit vielen rechnern hab wird das ziemlich lahm. wie kann man sowas optimieren?
 
Wieso zählst Du nicht in MySQL selbst?

Code:
SET @counter:=0;
SELECT (@counter:=@counter+1) AS 'Nummerierung', <weitere spalten> FROM tabelle
 
super, genau sowas hab ich gesucht! danke dir ;)
edit: ach ne quark, zu früh gefreut!

ich hab ja so nur die plätze der rechner von dem user selbst.
sprich wenn ich nur einen rechner zurück bekomme ist der auf platz 1 und das eben stimmt ja nicht!
 
Zurück
Oben