Hallo Leute,
hab hier eine Abfrage welche auf using filesort bei "nur" 20.000 Datensätzen zugreift und ich weis nich warum.
Mach ich die Abfrage OHNE SQL_CALC_FOUND_ROWS, dann wirds nich genutzt und die Abfrage rennt in 0.0002 sek
Hab die Abfrage und die Indizes schon auf verschiedenste weise umgebaut. Hilft aber alles nix.
Ich finde die Abfrage mit 0.15 sek auch übertrieben langsam für die Anzahl.
Vielleicht sieht ja von euch jemand das Problem oder kann mir sagen wie man die Indizes am sinnvollsten setzen könnte.
Das sagt EXPLAIN:
Indizes:
Gruss
hab hier eine Abfrage welche auf using filesort bei "nur" 20.000 Datensätzen zugreift und ich weis nich warum.
Mach ich die Abfrage OHNE SQL_CALC_FOUND_ROWS, dann wirds nich genutzt und die Abfrage rennt in 0.0002 sek
Hab die Abfrage und die Indizes schon auf verschiedenste weise umgebaut. Hilft aber alles nix.
Ich finde die Abfrage mit 0.15 sek auch übertrieben langsam für die Anzahl.
Vielleicht sieht ja von euch jemand das Problem oder kann mir sagen wie man die Indizes am sinnvollsten setzen könnte.
Code:
SELECT SQL_CALC_FOUND_ROWS p.products_id
FROM products_description pd
INNER JOIN products p ON pd.language_id = '2' AND pd.products_id = p.products_id
INNER JOIN products_to_categories p2c ON p.products_id = p2c.products_id
WHERE p2c.categories_id = '52'
AND p.products_status = '1'
AND (p.section_id = '0' || p.section_id = '13')
ORDER BY p.products_id LIMIT 0,20
Das sagt EXPLAIN:
Code:
1 SIMPLE p ALL PRIMARY,status NULL NULL NULL 19966 Using where; Using filesort
1 SIMPLE p2c eq_ref PRIMARY,pid,cid PRIMARY 8 db1.p.products_id,const 1 Using index
1 SIMPLE pd eq_ref PRIMARY,pid,lid PRIMARY 8 db1.p2c.products_id,const 1 Using where; Using index
Indizes:
Code:
products(p): products_id = PRIMARY
products_to_categories(p2c): products_id, categories_id = PRIMARY
products_description(pd): products_id, language_id = PRIMARY
Gruss
Zuletzt bearbeitet: