php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-11-2008, 10:39
Postaria
 Registrierter Benutzer
Links : Onlinestatus : Postaria ist offline
Registriert seit: Mar 2004
Beiträge: 100
Postaria ist zur Zeit noch ein unbeschriebenes Blatt
Angry Das leidige Thema Joins

Vor ab das was vorliegt:
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 ;
Tabelle player
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 ;
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:
Code:
SELECT 
player.PlayerID AS PlayerID,
max(playerreports.AbspielDatum) AS AbspielDatum 

FROM
player LEFT JOIN playerreports
ON player.PlayerID = playerreports.PlayerID
GROUP BY PlayerID;
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.
Mit Zitat antworten
  #2 (permalink)  
Alt 20-11-2008, 11:03
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was sagt EXPLAIN?
Mit Zitat antworten
  #3 (permalink)  
Alt 20-11-2008, 11:58
Postaria
 Registrierter Benutzer
Links : Onlinestatus : Postaria ist offline
Registriert seit: Mar 2004
Beiträge: 100
Postaria ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
1 	SIMPLE 	player 	ALL 	NULL 	NULL 	NULL 	NULL 	25 	Using temporary; Using filesort
1 	SIMPLE 	playerreports 	ALL 	PlayerID 	NULL 	NULL 	NULL 	119705
Mit Zitat antworten
  #4 (permalink)  
Alt 20-11-2008, 12:05
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und? Was hast du schon dagegen getan?

type = ALL ist nicht gut
possible_keys = NULL auch nicht gut
key = NULL genauso schlecht
...

Tu was dagegen.
Mit Zitat antworten
  #5 (permalink)  
Alt 20-11-2008, 12:44
Postaria
 Registrierter Benutzer
Links : Onlinestatus : Postaria ist offline
Registriert seit: Mar 2004
Beiträge: 100
Postaria ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
1 	SIMPLE 	player 	index 	NULL 	PlayerID 	4 	NULL 	25 	Using index
1 	SIMPLE 	playerreports 	ref 	PlayerID 	PlayerID 	4 	beamc.player.PlayerID 	19951
so das sind dann für die Abfrage 0.6 Sekunden das ist schon angenehmer
habe den Index der player tabelle auf PlayerID gesetzt und auch nebenbei in der player tabelle das Feld PlayerID auf INT, der war vorher auf varchar.

geht es eigentlich noch schneller ?
Mit Zitat antworten
  #6 (permalink)  
Alt 20-11-2008, 19:34
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wohl nicht, und wenn lohnt sich der Zeitaufwand nicht.
Kein Filesort, kein Temptable, Index wird benutzt. Damit sind alle einfachen Dinge abgearbeitet, bei allem tiefer (sofern möglich) ist der Aufwand exponentiell ungünstig zum Ergebnis.

Geändert von ghostgambler (24-11-2008 um 14:15 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 24-11-2008, 11:01
Postaria
 Registrierter Benutzer
Links : Onlinestatus : Postaria ist offline
Registriert seit: Mar 2004
Beiträge: 100
Postaria ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann habe ich das soweit also abgearbeitet. werde dann in Zukunft mir etwas anderes überlegen müssen.
Soweit ist es schnell genug für meine Zwecke jedoch wird es auf dauer schon länger dauern.
Zur Zeit sieht es aber gut mit der geschwindigkeit aus.
Danke euch allen für die Teilnahme an dem Problem.

Muss mal wieder sagen: Sagenhafte Hilfe die es nirgendwo anders in Foren gibt.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43 Uhr.