Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/htdocs/w01136d3/wordpress/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Es sind nur ein paar Handgriffe, die Welten bewegen. Ich hatte eine SQL Abfrage mit ein paar Joins, die bei steigender Anzahl von Datensätzen bis zu 5 Minuten dauerte. Das konnte so natürlich nicht weitergehen, also hab ich kurz eine Relation mittels Fremdschlüssel in der Datenbank-Struktur realisiert und die Abfrage dauerte von nun an 2 Sekunden – Wahnsinn! Das Problem mit der Geschwindigkeit hatte ich übrigens auch bei jedem XT Commerce Shop mit mehreren Hundert oder Tausend Artikeln, bei dem DirectUrl für suchmaschinenfreundliche URLs installiert ist. Das Problem ist, das DirectUrl die Tabelle mit den Alias-URLs  bei jeder Änderung des Produktkatalogs, der Kategorien und der Content Seiten neu erstellt. In Bezug auf das Bearbeiten von Produkten und Kategorien können wir das Laden von 5 Minuten auf 2 Sekunden verringern.  Die folgende MySQL Code zeigt die modifizierte Tabellenstruktur mit Indizes für die DirectUrl-Alias-Tabelle.

 

Hier wurden lediglich 3 Fremdschlüssel ergänzt, weil die Joins der Abfrage über diese Fremdschlüssel verlaufen: fk_products_description, fk_categories_description und fk_languages.

Wichtig ist hierbei das Stichwort InnoDb. Das Verknüpfen der Tabellen mit Fremdschlüsseln funktioniert in MySQL nur mit der Storage-Engine InnoDb. Also müssen alle Tabellen, die verknüpft werden sollen vom Typ InnoDb sein. In phpMyAdmin kann man dies unter Operations ändern. Ansonsten einen ALTER TABLE Befehl auf die betreffenden Tabellen ausführe. Im Falle von der DirectUrl Optimierung wären das diese hier:

 

Am saubersten ist es jedoch, die Struktur mit InnoDb neu zu erstellen und nachträglich die Datensätze mittels INSERTs einfügen.

So dann gehen wir noch kurz auf einen Fremdschlüsseleintrag in der Tabellenstruktur ein, hier nochmals ein Auszug aus der Struktur oben:

 

Mit INDEX wird einfach mal ein Index auf das betreffende Feld gesetzt, welches den Schlüssel für das Verknüpfen der Tabellen enthält. Mit einem CONSTRAINT hat man nun die Möglichkeit den Fremdschlüssel zu definieren. REFERENCES gibt hierbei an, in welcher Tabelle und welcher Spalte sich der Fremdschlüssel befindet. Befindet sich die Tabelle in einer anderen Datenbank, kann dies natürlich auch definiert werden. Der Name der Datenbank mit einem Punkt einfach vor dem Tabellennamen geschrieben: DBNAME.TABLENAME. In dem Beispiel ist also categories_description die Tabelle die wir über categories_id verknüpfen wollen. Also ist bluegate_seo_url.categories_id == categories_description.categories_id. Sollte dies bei einem Datensatz nicht der Fall sein, so erscheint eine Fehlermeldung. Mit den Relationen wird also zugleich für eine schöne Datenkonsistenz gesorgt.

PS: Indizes ist die Mehrzahl von Index.

Donnerstag, 23. April 2009 [MySQL] RSS 2.0 / Trackback senden

3 Kommentare

  1. digi-alex27

    Mittwoch, 14. Juli 2010 um 16:10

    Vielen Dank für diese Lösung ! Werde es gleich mal ausprobieren und hoffen das es bei uns im Shop funktioniert.

  2. Tobias

    Montag, 13. Juni 2011 um 21:29

    Hallo,
    vielen Dank für den Tipp mit den Indizes! Können Sie mir sagen, wie der SQL-Befehl lautet, den ich ausführen muss, um eine bestehende bluegate_seo_url Tabelle entsprechend zu tunen?

    Vielen Dank schonmal und Grüße!

  3. digi-alex27

    Samstag, 5. November 2011 um 22:01

    Die Lösung würde an und für sich funktionieren. Jedoch bricht die oben angegeben Lösung bei doppelten Produkten und Kategorien die Anwendung ab. Direct Url prügelt bei doppelten Produkten und Kategorien solange die Anwendung durch, bis in der DB: bluegate_seo_url Tabelle: url_md5 kein doppelter Zahlen und Buchstaben Code reingeschrieben wird. Und weil Direct Url das eben so macht, läuft die Anwendung bei einer hohen Kategorie Anzahl ( eigentlich nur bei den Kategorien )extrem langsam oder teilweise gar nicht durch. Beispiel: Direct Url indexiert 170 000 Produkt URL`s in unter einer Minute, für 2000 Kategorien benötigt es aber 20 Minuten. Hersteller wurde schon vor Jahren darauf hingewiesen, geändert hat sich aber nichts.

Einen Kommentar hinterlassen

XHTML allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>