Optimierung MySQL-Query
bearbeitet von bobbyMoin,
So, ich möchte eine komfortablere und elegantere sowie performantere Lösung nicht vorenthalten.
~~~SQL
SELECT * FROM entries WHERE id IN  (
    SELECT d.id FROM 
      ( SELECT f.id, @k := @k+1 AS pos, if(id = 88900 , @y := @k, @y:=@y ) test FROM 
         (SELECT id FROM entries ORDER BY price DESC) f, 
         (SELECT @k := 0 FROM DUAL) AS c 
      ) d 
    WHERE d.pos BETWEEN @y-1 AND @y+1
) LIMIT 0,3
~~~
Ausführungszeit bei 25 TSD Datensätzen: 40 - 60ms
Gruß Bobby
-- 
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! 
<- ### Henry L. Mencken ### -> 
Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! 
<- ### Viktor Frankl ### 
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:) 
Optimierung MySQL-Query
bearbeitet von bobbyMoin,
So, ich möchte eine komfortablere und elegantere sowie performantere Lösung nicht vorenthalten.
~~~SQL
SELECT * FROM entries WHERE id IN  (
    SELECT d.id FROM 
      ( SELECT f.id, @k := @k+1 AS pos, if(id = 88900 , @y := @k, @y:=@y ) test FROM 
         (SELECT id FROM entries ORDER BY price DESC) f, 
         (SELECT @k := 0 FROM DUAL) AS c 
      ) d 
    WHERE d.pos BETWEEN @y-1 AND @y+1
) LIMIT 0,3
~~~
Ausführungszeit bei 25 TSD Datensätzen: 60 - 90ms
Gruß Bobby
-- 
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! 
<- ### Henry L. Mencken ### -> 
Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! 
<- ### Viktor Frankl ### 
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:) 
 nicht angemeldet
 nicht angemeldet