SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 05.03.2009, 13:14:36
alice alice ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
MySQL Subselect, beschleunigen wie?

hallo,

diese select statment:

Code:
SELECT 
m.ben_user,m.ben_img,m.ben_resu,m.ben_typ,m.mem_typ from tab2 m 
where
m.ben_resu =
( 
SELECT 
MAX(i.ben_resu) FROM tab2 i 
WHERE 
m.ben_user = i.ben_user and i.ben_typ='mem' and i.mem_typ='d3' 
) 
ORDER BY m.ben_resu desc
lasse ich laufen was auch das richtige ergebniss bringt. jedoch ist die performance eher schlecht.

umfeld: mysql v5.0.xx

wie könnte ich das beschleunigen?

gruss

alice
Mit Zitat antworten
  #2  
Alt 05.03.2009, 13:28:02
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: MySQL Subselect, beschleunigen wie?

Welche Indexe sind auf dieser Tabelle angelegt?

Geändert von Crisps (05.03.2009 um 13:28:11 Uhr)
Mit Zitat antworten
  #3  
Alt 05.03.2009, 13:31:19
alice alice ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
AW: MySQL Subselect, beschleunigen wie?

hi,

momentan nur einen einzigen, auf dem feld ID als PRIMARY KEY (`ID`),
wobei dieses feld hierbei nicht benötigt wird.

Geändert von alice (05.03.2009 um 13:32:06 Uhr)
Mit Zitat antworten
  #4  
Alt 05.03.2009, 13:42:55
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: MySQL Subselect, beschleunigen wie?

Erstell mal bitte diesen Index auf der Tabelle:
Code:
ALTER TABLE tab2 ADD INDEX ix_composite (ben_resu, ben_user, ben_typ, mem_typ);
Wenn das nicht hilft, wäre eine Ausgabe der SELECT Abfrage mit vogestelltem EXPLAIN (Also "EXPLAIN SELECT....") interessant.

Geändert von Crisps (05.03.2009 um 13:44:18 Uhr)
Mit Zitat antworten
  #5  
Alt 05.03.2009, 15:18:59
alice alice ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
AW: MySQL Subselect, beschleunigen wie?

hi,

Zitat:
Zitat von Crisps Beitrag anzeigen
Erstell mal bitte diesen Index auf der Tabelle:
Code:
ALTER TABLE tab2 ADD INDEX ix_composite (ben_resu, ben_user, ben_typ, mem_typ);
Wenn das nicht hilft, wäre eine Ausgabe der SELECT Abfrage mit vogestelltem EXPLAIN (Also "EXPLAIN SELECT....") interessant.
die indexe sind erstellt, ich kann sage das es schneller geworden ist :-) ,jedoch nicht so schnell das es optimal ist.
zu den anderen sqlstatments ist immer noch eine merkbarer unterschied vorhanden.

ein statement vogestelltem EXPLAIN habe ich ausgeführt, welche informationen wären dort intressant?, bzügl. der performance?

hier das erg. als csv dump:

Code:
"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1,000000";"PRIMARY";"m";"ALL";"null";"null";"null";"null";"1141,000000";"Using where; Using filesort"
"2,000000";"DEPENDENT SUBQUERY";"i";"ALL";"null";"null";"null";"null";"1141,000000";"Using where"
gruss

alice

Geändert von alice (05.03.2009 um 15:26:27 Uhr)
Mit Zitat antworten
  #6  
Alt 05.03.2009, 15:34:21
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: MySQL Subselect, beschleunigen wie?

Hast du EXPLAIN mit dem neuen Index ausgeführt oder ohne? Weil wenn es mit war ist das Ergebniss ziemlich schlecht. Wieviel Einträge hat den die Tabelle?

Code:
welche informationen wären dort intressant?, bzügl. der performance?
Wie gesagt, das Ergebniss von EXPLAIN zeigt an, dass kein einziger Index genutzt wurde.
Mit Zitat antworten
  #7  
Alt 05.03.2009, 16:11:24
alice alice ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
AW: MySQL Subselect, beschleunigen wie?

hi,

Zitat:
Zitat von Crisps Beitrag anzeigen
Hast du EXPLAIN mit dem neuen Index ausgeführt oder ohne? Weil wenn es mit war ist das Ergebniss ziemlich schlecht. Wieviel Einträge hat den die Tabelle?

Code:
welche informationen wären dort intressant?, bzügl. der performance?
Wie gesagt, das Ergebniss von EXPLAIN zeigt an, dass kein einziger Index genutzt wurde.
so, eben MIT den neuen indexen ein neuer fetch, dump hierzu:

Code:
"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1,000000";"PRIMARY";"m";"index";"null";"ix_composite";"142";"null";"1143,000000";"Using where"
"2,000000";"DEPENDENT SUBQUERY";"i";"ALL";"null";"null";"null";"null";"1143,000000";"Using where"
gruss

alice
Mit Zitat antworten
  #8  
Alt 05.03.2009, 16:27:50
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: MySQL Subselect, beschleunigen wie?

Hm, versuch mal diesen zweiten Composite Key anzulegen:

Code:
ALTER TABLE tab2 ADD INDEX ix_composite2 (ben_user, ben_typ, mem_typ);
Wird es damit besser?
Mit Zitat antworten
  #9  
Alt 06.03.2009, 14:30:27
alice alice ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
AW: MySQL Subselect, beschleunigen wie?

hi,

nein leider nicht...
Mit Zitat antworten
  #10  
Alt 06.03.2009, 15:23:59
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: MySQL Subselect, beschleunigen wie?

Ok, es wäre vielleicht besser sich der Abfrage selbst zuzuwenden. Einen Index brauchst du zwar bei dieser Abfrage, aber eine schnelle Lösung ist das im Moment nicht. Kannst du bitte genau erklären, was du mit der Abfrage überhaupt erreichen willst, was für Daten in der Tabelle gespeichert sind und wieviel Einträge die Tabelle enthält?


*Edit: Ok, Ich hab mir deine Abfrage noch einmal genau angesehen: Die Abkürzungen irritieren mich zwar etwas, aber kann es sein, dass es sich um eine Tabelle mit PC-Benchmarks handelt? "mem" also für Memory steht und "d3" für DDR3? Aus dieser Tabelle willst du jetzt für jeden User das beste Resultat aus "ben_resu" suchen - stimmt das soweit? Jetzt hätte ich eigentlich nur noch die Frage, was in der Spalte "ben_img" steht und inwiefern die Daten dort in Relation zum erwünschten Ergebniss stehen.

Geändert von Crisps (06.03.2009 um 15:51:43 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL 4 "große" Abfragen coder90 MySQLi/PDO/(MySQL) 0 06.09.2008 14:45:08
mysql subselect helado MySQLi/PDO/(MySQL) 9 07.04.2008 15:04:47
Mysql startet nicht oberonal MySQLi/PDO/(MySQL) 3 24.11.2006 10:41:31
MySQL Page Script. Problem. dtone MySQLi/PDO/(MySQL) 8 15.10.2006 15:58:06
MySQL - ORDER BY RAND() und PHP MacMarc PHP Grundlagen 15 05.12.2002 23:23:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24:27 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt