Jump to content
xt:Commerce Community Forum

Performance der XTC Suche per SQL Änderung steigern?


Recommended Posts

Hallo allerseits!

Ich beschäftige mich nun schon seit mehr als einem Jahr intensiv mit XTC und konnte schon so einige sehr ausgefallene Wünsche meines Chefs erfüllen. Nun steh ich leider ein wenig an und hoffe daher dass jemand eine zündende Idee parat hat.

Zum Problem:

Die Suche von XTC ist leider alles andere als flott unterwegs. (am Server liegts nicht, da dies ein Managed Server ist mit ausreichend Performance). Der Hund liegt in der SQL Abfrage in der advanced_search_results.php.

Mit der Standard Anweisung dauert ein Suchvorgang ca. 10 Sekunden, was leider eindeutig zu lang ist. Dadurch gehen leider Kunden flötten. Der Grund dafür scheint wohl, dass mein Shop ca. 500 verschiedene Attribute benutzt (geht leider nicht weniger) bei ca. 1400 Produkten.

Hier der Auszug aus der advanced_search_results.php, welchen wohl einige kennen werden:

$from_str = "FROM " . TABLE_PRODUCTS . " AS p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " AS pd ON (p.products_id = pd.products_id) " . $subcat_join . " LEFT OUTER JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN " . TABLE_PRODUCTS_OPTIONS_VALUES . " AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN " . TABLE_SPECIALS . " AS s ON (p.products_id = s.products_id) AND s.status = '1'";

Nun habe ich die Suche nur auf das notwendigste begrenzt und zwar so:

$from_str = "FROM " . TABLE_PRODUCTS . " AS p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " AS pd ON (p.products_id = pd.products_id)";

Resultat ist eine Suche < 1 Sekunde. So soll es auch sein.

Problem ist nun leider, dass die Kunden nicht mehr nach Artikelnummern (die in den products_attributes) und Farben, Größen, etc. suchen können. Da dies aber jede Shopsuche können sollte und auch einen Serviceaspekt hat, würde ich gerne dies wieder verwenden können, aber eine Suchdauer von 10 Sek. ist einfach zu lang.

Nun bin ich leider nicht der SQL Guru (die JOIN Anweisungen verschließen sich mir noch), sodass ich hoffe jemand kann mir hier einen Lösungsweg (falls überhaupt per SQL möglich) aufzeigen.

Herzlichen Dank im voraus!!!

Link to comment
Share on other sites

Hi matlock,

in erster Linie hängt es doch davon ab, was Deine Kunden suchen. Wenn Du - wie in Deinem Beispiel - die Abfrage verkürzt fehlen Teilergebnisse. Klar. Bei Deiner Version der Preis.

Schau doch mal, die Suche vielleicht aufzuteilen. Hat in erster Linie nix mit SQL zu tun sondern mit gesundem Verstand.

Suche nach Text: products_description, products_option_values

Suche nach Preisen / Artikelnummer: products, products_attributes

Danach dann schrittweise verfeinern...

Die JOIN Sntax findest Du überigens hier erklärt:

http://dev.mysql.com/doc/refman/4.1/en/index.html

Ben

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...