Jest sobie zapytanie:
SELECT @nr:=@nr+1,IF(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM f_post WHERE FK_TOPIC=2 ORDER BY f_post.ID ASC
No i ładnie mi bierze index FK_TOPIC.
Explain:
Cytat
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1 SIMPLE f_post ref FK_TOPIC FK_TOPIC 4 const 2 Using where; Using filesort
Wziął mi pod uwagę dwa rekordy.1 SIMPLE f_post ref FK_TOPIC FK_TOPIC 4 const 2 Using where; Using filesort
Daję teraz to w podzapytanie:
SELECT @idnr AS nr FROM (SELECT @nr:=@nr+1,IF(ID=@id, @idnr := @nr,@idnr=@idnr),ID FROM f_post WHERE FK_TOPIC=2 ORDER BY f_post.ID ASC ) podsel WHERE podsel.ID = @id;
I już mi nie uwzględnia FK_TOPIC jako klucza
Cytat
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1 PRIMARY <derived2>ALL(NULL)(NULL)(NULL)(NULL)2Using where
2 DERIVED f_post ALL FK_TOPIC FK_TOPIC 4 118 Using filesort
1 PRIMARY <derived2>ALL(NULL)(NULL)(NULL)(NULL)2Using where
2 DERIVED f_post ALL FK_TOPIC FK_TOPIC 4 118 Using filesort
Bierze pod uwagę wszystkie rekordy (118)
O co chodzi?Mam chwilowe zaćmienie związane z poszukiwaniem samochodu

ps: wystarczy ze wywalę ORDER BY ID asc i już gra jak ta lala, szuka po dwóch rekordach.
Czemu normalnie dziala niezależnie od order by, a w podzapytaniu trzeba wywalic order by by poszło normalnie