Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
abfrage beschleunigen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
abfrage beschleunigen


 
lx-club
09-06-2005, 18:13 
 
hallo...
die folgende abfrage braucht 2 sekunden. kann man das nich noch etwas beschleunigen oder is das normal so? anstatt den * habe ich auch spaltennamen angegeben, aber das bringt nix.



SELECT t1. * , t2. * , t3. *
FROM kk_produktgruppen t1
LEFT JOIN kk_produktgruppen t2 ON t1.pg_id = t2.parent_id
LEFT JOIN kk_produktgruppen t3 ON t2.pg_id = t3.parent_id
WHERE t2.parent_id IS NOT NULL
AND t3.bezeichnung IS NOT NULL
AND t3.pg_id IN ( 96, 97, 98, 99, 100, 101, 102 )
ORDER BY t1.bezeichnung ASC , t2.bezeichnung ASC , t3.bezeichnung ASC

 
mrhappiness
09-06-2005, 20:24 
 
Schreib mal EXPLAIN vor die Abfrage und poste das Ergebnis, das du dann in phpmyadadmin erhältst

 
lx-club
09-06-2005, 20:50 
 
hier is das ergebnis


table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 678 Using temporary; Using filesort
t2 ALL NULL NULL NULL NULL 678 Using where
t3 ALL NULL NULL NULL NULL 678 Using where


die zahlen bei IN(....) sind aus einer anderen abfrage, oder soll ich in diese abfrage noch 2 weitere joins machen?

 
mrhappiness
09-06-2005, 21:06 
 
Auf welchen Spalten in welchen Tabellen hast du Indizes?
Es werden nämlich keine genutzt

 
lx-club
09-06-2005, 21:11 
 
ich habe keine indizes, und ist ja auch nur eine tabelle. wo müsste ich denn diese setzen, bzw. auf welche spalten?

 
lx-club
09-06-2005, 21:20 
 
Original geschrieben von mrhappiness
Auf welchen Spalten in welchen Tabellen hast du Indizes?
Es werden nämlich keine genutzt

hallo mrhappiness,

vielen dank für den hinweis mit den indizes. ich habe jetzt einen index über die pg_id und die parent_id gelegt und es geht gleich um welten schneller 0,0131sek

 
TBT
09-06-2005, 22:09 
 
aus

LEFT JOIN kk_produktgruppen t2 ON t1.pg_id = t2.parent_id
LEFT JOIN kk_produktgruppen t3 ON t2.pg_id = t3.parent_id
WHERE t2.parent_id IS NOT NULL
AND t3.bezeichnung IS NOT NULL

kannst du INNER JOIN machen, und die IS NULL dafür weglassen.
Dann geht es noch schneller

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:16 Uhr.