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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
05.03.2009, 13:14:36
|
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
|
05.03.2009, 13:28:02
|
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)
|
05.03.2009, 13:31:19
|
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)
|
05.03.2009, 13:42:55
|
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)
|
05.03.2009, 15:18:59
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
|
|
AW: MySQL Subselect, beschleunigen wie?
hi,
Zitat:
Zitat von Crisps
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)
|
05.03.2009, 15:34:21
|
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.
|
05.03.2009, 16:11:24
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
|
|
AW: MySQL Subselect, beschleunigen wie?
hi,
Zitat:
Zitat von Crisps
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
|
05.03.2009, 16:27:50
|
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?
|
06.03.2009, 14:30:27
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 47
Beiträge: 8
|
|
AW: MySQL Subselect, beschleunigen wie?
hi,
nein leider nicht...
|
06.03.2009, 15:23:59
|
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)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24:27 Uhr.
|