だから私はこのコードスニペットをここに見つけました。それは本質的にMySQLのための "row_number()"関数を偽造します。それは私が好きで必要な非常に高速で実行されますが、最後にwhere句を使用することはできません。エイリアス化された列でこのクエリを高速化するにはどうすればよいですか?
select
@i:[email protected]+1 as iterator, t.*
from
big_table as t, (select @i:=0) as foo
where iterator = 875
に追加するとエラーが発生します。
上記のスニペットは約.0004秒で実行されます。私はサブクエリとして別のクエリ内でそれをラップすることができますが、それは痛いほど遅くなります。
select * from (
select
@i:[email protected]+1 as iterator, t.*
from
big_table as t, (select @i:=0) as foo) t
where iterator = 875
上記のスニペットは実行に10秒以上かかる。
とにかくこれをスピードアップするには?
サブクエリにしない限り、where句でエイリアス化された列を使用することはできません。 – 1000111
ええ、それは私がそれをサブクエリーにすると実現するのですが、スピードは非常に悪くなります(サブクエリーで.0004秒、別の '選択'内に10秒を入れると)。 質問が更新されました。 – MikelG