xt:Commerce SQL-Fehler 1104 in advanced_search_result.php
Dieser Fehler in den Suchresultaten einer xt:Commerce 3.04 SP 2.1 Installation hat mich jetzt einige Nerven geskostet. Auf der Suchergebnisseite prangt in etwa folgende SQL-Fehlermeldung:
1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
SELECT distinct p.products_id, p.products_price, p.products_model, p.products_quantity, p.products_shippingtime, p.products_fsk18, p.products_image, p.products_weight, p.products_tax_class_id, pd.products_name, pd.products_short_description, pd.products_description FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id) AND s.status = '1' WHERE p.products_status = '1' AND pd.language_id = '2' AND ( ( pd.products_keywords LIKE ('%samsung%') OR pd.products_name LIKE ('%samsung%') OR p.products_model LIKE ('%samsung%') ) ) GROUP BY p.products_id ORDER BY p.products_id
Die Lösung fand ich bei webshopshack.co.uk
Bei mir genügte es (wie im ersten Kommentar des Artikels beschrieben) die Tabelle specials mit einem Index zu versehen:
ALTER TABLE `specials` ADD UNIQUE `idx_s_products_id` ( `products_id` );
Weitere Lösungsvorschläge entnehme man obigem Post.
Hintergrund: das Problem tritt scheinbar bei einer zu grossen Menge von Produkten und/oder Produktattributen und/oder Sonderangeboten auf. Die Anfrage benötigt bei nicht optimierter Tabellenstruktur einfach zuviel Speicher.

Feb 20th, 2009 at 10:01 am
Indizes sind bei bei Datenbanken sowie so immer eine gute Idee! :)
Vielleicht solltest du das bei xt:Commerce mal überprüfen. Vielleicht springt dabei ja auch ein interessanter Artikel für den Blog heraus… ;)
Grüße
Jan
Feb 20th, 2009 at 10:30 am
Der Legionär meldet sich zu Wort :)
Oh ja, interessante Artikel. Viel wird derzeit nicht. Zwar bastle ich weiter an den xt:C Shops herum, AvatR soll aber nun auch vorran gehen.
Aber du kennst das ja, auf SELECT * FROM gibts wohl auch eine Schaffenspause :)
Feb 20th, 2009 at 4:19 pm
Ja, eine etwas längerer bereits. Leider habe ich es nicht geschafft den Blog neu zu beleben, zumal da eine thematische Neuausrichtung notwendig wäre….