ERLEDIGT
JA
JA
ANTWORTEN
22
22
ZUGRIFFE
501
501
EMPFEHLEN
-
Nein, sind genau 13 Zeichen, von denen einigen mit 0 beginnen, es wird nicht mit Nullen aufgefüllt.
Die beiden ersten Abfragen laufen mittlerweile wunderbar, in 5 Minuten durch.
Nur die letzte Abfrage, brauch ewig, ich hab eben einmal überschlagen, es würde über 22 Minuten dauern. Werde jetzt einmal testen, ob MySQL es wirklich schafft oder immer abbricht, ab einem Punkt.
Code sql:1 2 3 4 5
SELECT SUM(amount) AS summe FROM mail WHERE packetno NOT IN (SELECT packetno FROM export)
Durch die 2. CPU kann ich aber einen Thread zu 100% ausnutzen, ohne das der Webserver langsamer wird für andere User.Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Vorweg - mach ein Backup der DB, bevor du Änderungen daran vornimmst. Falls geschehen oder idealerweise die Änderungen zunächst auf einem Testsystem durchgeführt werden - go

Bzgl. des Servers - nicht verrückt machen
.
Dann stelle den Datentypen von packetno und productno auf VARCHAR(15) um.
Code sql:1 2 3
ALTER TABLE mail CHANGE paketno paketno VARCHAR(15) COLLATE latin1_german1_ci NOT NULL; ALTER TABLE mail CHANGE productno productno VARCHAR(15) COLLATE latin1_german1_ci NOT NULL; ALTER TABLE export CHANGE paketno paketno VARCHAR(15) COLLATE latin1_german1_ci NOT NULL;
Welche Werte stehen in Scandate drin (Beispiel)?
cost_unt nach INT wandeln ist optimal.
Code sql:1
ALTER TABLE export CHANGE cost_unit cost_unit INT UNSIGNED DEFAULT 0
Im Anschluss führe bitte die 3 SQL-Kommandos mit einem voran gestellten EXPLAIN aus und poste die Ergebnisse hier. Beispiel auf der SQL-Konsole:
Code sql:1
EXPLAIN SELECT feld FROM tabelle WHERE 1=1\G
Grüße BNEine Lösung hätte ich schon, aber sie passt nicht zum Problem.
-
Nachdem ich alles umgesetzt habe erhalte ich folgendes Ergebnis.
1. Abfrage
Code sql:1 2 3 4 5
-- INSERT INTO mv_tax_sum (tax, cost_unit, summe) EXPLAIN SELECT tax, cost_unit, SUM( amount ) AS summe FROM mail AS m INNER JOIN export AS e ON e.packetno = m.packetno GROUP BY cost_unit, tax;
Ausgabe:
Code :1 2 3
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE m ALL IDX_m_packetno NULL NULL NULL 28723 Using temporary; Using filesort 1 SIMPLE e ref IDX_e_packetno IDX_e_packetno 17 spedition.m.packetno 1
Code :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
object(stdClass)#1 (10) { ["id"]=> string(1) "1" ["select_type"]=> string(6) "SIMPLE" ["table"]=> string(1) "m" ["type"]=> string(3) "ALL" ["possible_keys"]=> string(14) "IDX_m_packetno" ["key"]=> NULL ["key_len"]=> NULL ["ref"]=> NULL ["rows"]=> string(5) "28723" ["Extra"]=> string(31) "Using temporary; Using filesort" } object(stdClass)#2 (10) { ["id"]=> string(1) "1" ["select_type"]=> string(6) "SIMPLE" ["table"]=> string(1) "e" ["type"]=> string(3) "ref" ["possible_keys"]=> string(14) "IDX_e_packetno" ["key"]=> string(14) "IDX_e_packetno" ["key_len"]=> string(2) "17" ["ref"]=> string(20) "spedition.m.packetno" ["rows"]=> string(1) "1" ["Extra"]=> string(0) "" }
2. Abfrage:
PHP-Code:mysql_query("CREATE INDEX IDX_e_packetno ON export (packetno)");
mysql_query("CREATE INDEX IDX_m_packetno ON mail (packetno)");
Code sql:1 2 3 4 5 6 7 8
EXPLAIN SELECT SUM( amount ) AS summe FROM mail WHERE packetno NOT IN ( SELECT packetno FROM export )
Ausgabe:
Code :1 2 3
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY mail ALL NULL NULL NULL NULL 28723 Using where 2 DEPENDENT SUBQUERY export index_subquery IDX_e_packetno IDX_e_packetno 17 func 1 Using index
Code :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
object(stdClass)#1 (10) { ["id"]=> string(1) "1" ["select_type"]=> string(7) "PRIMARY" ["table"]=> string(4) "mail" ["type"]=> string(3) "ALL" ["possible_keys"]=> NULL ["key"]=> NULL ["key_len"]=> NULL ["ref"]=> NULL ["rows"]=> string(5) "28723" ["Extra"]=> string(11) "Using where" } object(stdClass)#2 (10) { ["id"]=> string(1) "2" ["select_type"]=> string(18) "DEPENDENT SUBQUERY" ["table"]=> string(6) "export" ["type"]=> string(14) "index_subquery" ["possible_keys"]=> string(14) "IDX_e_packetno" ["key"]=> string(14) "IDX_e_packetno" ["key_len"]=> string(2) "17" ["ref"]=> string(4) "func" ["rows"]=> string(1) "1" ["Extra"]=> string(11) "Using index" }Geändert von Steusi (17.08.10 um 14:31 Uhr)
Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Laufzeit der beiden Queries (ohne Explain)?
Eine Lösung hätte ich schon, aber sie passt nicht zum Problem.
-
1. Query dauerte ca. 5 Minuten.
2. Query habe ich nach ca. 25 Minuten abgebrochen.
Paradoxerweise wurden eben alle Berechnungen in 240 ms ausgeführt, ich habe danach alle relevanten Daten zum Test aus der DB entfernt und einen Import+Berechnung durchgeführt, es dauert keine 5 Sekunden, danach war alles erledigt. Dies verstehe ich nicht...Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Nun du hast den Index auf paketno eingefügt. Ich würde vom Explain her sagen, dass die Indexe soweit ganz gut greifen. Viel mehr kann man mit SQL-Mitteln nicht mehr raus holen. 5 Sek klingt "ok".
5/25 min - da war vlt. der Index noch nicht aufgebaut?Eine Lösung hätte ich schon, aber sie passt nicht zum Problem.
-
Die Definition der Indizes war seit yaslaw's Tipp dabei. Aber ich hatte das Gefühl, das sie bei einem var_dump mit PHP aufgeführt wurden, jedoch bei PHPMyAdmin erst später, aber dies kann ja nicht sein.
Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Ne das kann irgendwie nicht sein, es sei denn du hast auf 2 verschiedenen Datenbanken gearbeitet.
Nachtrag: Die Indexe waren beim Show Create Table ... aber nicht bei. Das war doch nach Yaslaws Tipp.Geändert von bn (17.08.10 um 17:45 Uhr)
Eine Lösung hätte ich schon, aber sie passt nicht zum Problem.
Ähnliche Themen
-
Optimierung mit VBA 8*8 Felder
Von fabalab im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 05.05.07, 12:57 -
Optimierung
Von son gohan im Forum HTML & XHTMLAntworten: 8Letzter Beitrag: 11.03.05, 13:28 -
Optimierung im IE....
Von Garo_TheOne im Forum HTML & XHTMLAntworten: 0Letzter Beitrag: 16.12.04, 00:41 -
Optimierung
Von lacosaa im Forum Flash PlattformAntworten: 3Letzter Beitrag: 24.01.04, 00:49 -
Pc-optimierung****?
Von alexmayer2000 im Forum Microsoft WindowsAntworten: 3Letzter Beitrag: 19.09.01, 23:48





Zitieren
Login




