# SQL Optimierung Index setzen - Sonderpreise anzeigen -

**URL:** <https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [17. November 2014 um 12:01 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629 "2014-11-17T12:01:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![rantanplan](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@rantanplan](https://forum.shopware.com/u/rantanplan)\
**Post date:** [17. November 2014 um 12:01 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/1 "2014-11-17T12:01:00Z")

</div>

Hallo, wir haben derzeit extrem lange Ladezeiten bei der Anzeige der Produkte mit Sonderpreisen über das Plugin individuelle Kategorien. Unsere Query dazu: SELECT a.id FROM s\_articles AS a INNER JOIN s\_articles\_attributes as aAttributes ON aAttributes.articledetailsID = a.main\_detail\_id INNER JOIN s\_articles\_categories as aCategories ON aCategories.articleID = a.id LEFT JOIN s\_articles\_prices AS p2 ON p2.articleID=a.id AND p2.pricegroup=‘B2B’ AND p2.to=‘beliebig’ LEFT JOIN s\_articles\_prices AS p3 ON p3.articleID=a.id AND p3.pricegroup=‘EK’ AND p3.to=‘beliebig’ WHERE IFNULL(p2.pseudoprice, p3.pseudoprice) \> 0 AND a.mode = 0 AND a.active=1 GROUP BY a.id ORDER BY LPAD (aAttributes.attr19,5,0) ASC, a.id LIMIT 0, 48 Jemand einen Tipp, wo ich in der DB einen Index setzen kann, damit die Abfrage beschleunigt wird? Bin für jeden Ratschlag dankbar! Gruß

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [17. November 2014 um 12:13 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/2 "2014-11-17T12:13:25Z")

</div>

Die Indizes sollten soweit korrekt durch Shopware gesetzt sein. Was sagt ein EXPLAIN SELECT? Ein LDAP() in einem ORDER BY auf eine Spalte ohne Index kann sehr sehr lange dauern, da hier -immer- alle Zeilen untersucht werden müssen. Brauchst du diese Sortierung? Viele Grüße

---

<div class="post-metadata">

**Author:** ![rantanplan](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@rantanplan](https://forum.shopware.com/u/rantanplan)\
**Post date:** [17. November 2014 um 12:18 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/3 "2014-11-17T12:18:10Z")

</div>

Hallo, grundsätzlich eigentlich nicht, in der attr19 haben wir einfache Zahlen zur Sortierung gespeichert. Wie könnte ich das dann performanter formulieren? ORDER BY LPAD (aAttributes.attr19,5,0) ASC, a.id Nur mit “aAttributes.attr19 ASC” statt “LPAD (aAttributes.attr19,5,0) ASC” stimmt die Sortierung nicht mehr.

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [17. November 2014 um 12:27 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/4 "2014-11-17T12:27:20Z")

</div>

[quote=„Aquatuning GmbH“]Was sagt ein EXPLAIN SELECT?[/quote] Viele Grüße

---

<div class="post-metadata">

**Author:** ![rantanplan](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@rantanplan](https://forum.shopware.com/u/rantanplan)\
**Post date:** [17. November 2014 um 12:31 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/5 "2014-11-17T12:31:01Z")

</div>

id select\_type table type possible\_keys key key\_len ref rows Extra 1 SIMPLE a index PRIMARY,main\_detailID,product\_newcomer,get\_category\_filters PRIMARY 4 1508 Using where; Using temporary; Using filesort 1 SIMPLE p2 ref articleID,pricegroup\_2,pricegroup articleID 4 dev\_ms\_db1.a.id 161 1 SIMPLE aAttributes ref articledetailsID articledetailsID 5 dev\_ms\_db1.a.main\_detail\_id 1 Using where 1 SIMPLE aCategories ref articleID,articleID\_2 articleID\_2 4 dev\_ms\_db1.a.id 9 Using index 1 SIMPLE p3 ref articleID,pricegroup\_2,pricegroup articleID 4 dev\_ms\_db1.a.id 161 Using where

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/a/ab419a022785f94ab4712f8eea9929b6d73e81ef.jpeg)

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [17. November 2014 um 13:36 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/6 "2014-11-17T13:36:09Z")

</div>

[quote=„rantanplan“]in der attr19 haben wir einfache Zahlen zur Sortierung gespeichert[/quote] Das dürfte MySQL relativ egal sein, da LPAD() auf strings angewendet wird und MySQL dein attr19 somit als string behandelt. Bevor wir weitermachen: wie lange braucht die query mit deinem ORDER BY - und wie lange ohne? Viele Grüße

---

<div class="post-metadata">

**Author:** ![rantanplan](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@rantanplan](https://forum.shopware.com/u/rantanplan)\
**Post date:** [17. November 2014 um 13:43 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/7 "2014-11-17T13:43:48Z")

</div>

Hallo, die Query mit Order by braucht ungecached etwa 150 Sekunden, ohne das ganze Orderby Statement leider genauso lange.

---

<div class="post-metadata">

**Author:** ![rantanplan](https://avatars.discourse-cdn.com/v4/letter/r/bb73d2/32.png) [@rantanplan](https://forum.shopware.com/u/rantanplan)\
**Post date:** [19. Dezember 2014 um 09:13 UTC](https://forum.shopware.com/t/sql-optimierung-index-setzen-sonderpreise-anzeigen/23629/8 "2014-12-19T09:13:54Z")

</div>

Hallo, die letzte Zeile WHERE IFNULL(p2.pseudoprice, p3.pseudoprice) \> 0"; verursacht bei mir diese extrem lange Query. Jemand eine Idee, wie ich den Funktionsinhalt beibehalten kann, aber die Query optimieren kann?
