Einzelnen Beitrag anzeigen
Alt 14.11.09, 20:25   #1 (permalink)
easteregg
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard 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?
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61