Vor ab das was vorliegt:
Tabelle playerreports :
Tabelle player
So sieht die Tabellenstruktur aus für beide Tabellen.
Das leidige Thema Joins habe ich mir ausfürlich angeschaut und rumprobiert hatte auch das gewünschte ergebniss gehabt.
Leider war es die ausführungszeit die mich zu dem schlussergebniss unbefriedigend gebracht hat.
das SQL-Querry ist mit der unbefriedigenden Zeit sieht folgendermaßen aus:
die Abfrage dauert ca 7 Sekunden was richtig unbefriedigend ist.
in der Tabelle playerreports sind bloß ca 100.000 Einträge und die Tabelle player beinhaltet 25 Einträge.
Will also wie ihr dem Querry entnehmen könnt den höchsten Eintrag der AbspielDatum für jeden der 25 Player rausfischen.
Habe auch schon mit diversen Key's rumprobiert leider kein hat sich an den 7 Sekunden des Querrys nicht viel getan.
Hoffe ihr könnt mir einwenig unter die arme greifen. eventuell übersehe ich ja einen wichtigen Teil.
Ich kann mir einfach nicht vorstellen das es nicht schneller wie 7 Sekunden für die Abfrage geht.
Vielen Dank im vorraus.
Tabelle playerreports :
Code:
-- -- Table structure for table `playerreports` -- CREATE TABLE IF NOT EXISTS `playerreports` ( `AbspielDatum` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `File` varchar(50) character set latin1 collate latin1_general_ci NOT NULL, `PlayerID` varchar(5) character set latin1 collate latin1_general_ci NOT NULL, `Dauer` int(5) NOT NULL, `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`), KEY `PlayerID` (`PlayerID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Code:
-- -- Table structure for table `player` -- CREATE TABLE IF NOT EXISTS `player` ( `id` int(11) NOT NULL auto_increment, `PlayerID` int(6) NOT NULL, `lasttimestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
Das leidige Thema Joins habe ich mir ausfürlich angeschaut und rumprobiert hatte auch das gewünschte ergebniss gehabt.
Leider war es die ausführungszeit die mich zu dem schlussergebniss unbefriedigend gebracht hat.
das SQL-Querry ist mit der unbefriedigenden Zeit sieht folgendermaßen aus:
Code:
SELECT player.PlayerID AS PlayerID, max(playerreports.AbspielDatum) AS AbspielDatum FROM player LEFT JOIN playerreports ON player.PlayerID = playerreports.PlayerID GROUP BY PlayerID;
in der Tabelle playerreports sind bloß ca 100.000 Einträge und die Tabelle player beinhaltet 25 Einträge.
Will also wie ihr dem Querry entnehmen könnt den höchsten Eintrag der AbspielDatum für jeden der 25 Player rausfischen.
Habe auch schon mit diversen Key's rumprobiert leider kein hat sich an den 7 Sekunden des Querrys nicht viel getan.
Hoffe ihr könnt mir einwenig unter die arme greifen. eventuell übersehe ich ja einen wichtigen Teil.
Ich kann mir einfach nicht vorstellen das es nicht schneller wie 7 Sekunden für die Abfrage geht.
Vielen Dank im vorraus.
Kommentar