SOでこのコードスニペットを見つけました。これは基本的に、MySQL の「row_number()」関数を偽造したものです。それは非常に高速に実行され、私はそれが好きで必要ですが、最後に where 句を付けることができません。
select
@i:=@i+1 as iterator, t.*
from
big_table as t, (select @i:=0) as foo
追加するwhere iterator = 875
とエラーになります。
上記のスニペットは、約 .0004 秒で実行されます。サブクエリとして別のクエリ内にラップできることはわかっていますが、非常に遅くなります。
select * from (
select
@i:=@i+1 as iterator, t.*
from
big_table as t, (select @i:=0) as foo) t
where iterator = 875
上記のスニペットは、実行に 10 秒以上かかります。
とにかくこれをスピードアップするには?