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:)