MSSQLデータベース全体を吸い上げる必要があるシステムがあります。現在、次のような方法でこれを行っています。
select top 1000 from table where id > 0 order by id;
次に、次のチャンクについて:
select top 1000 from table where id > 1000 order by id;
その後:
select top 1000 from table where id > 2000 order by id;
などなど。
MySQLでは、データベースが最初に結果をソートしてからカウントLIMIT
をスキャンする必要があるため、クエリの実行とOFFSET
クエリが非常に遅いことOFFSET
を学びました。そのカウントが大きくなると、読み取りカウントが急上昇するにつれて、人生は最悪になり始めます。
私の質問はこれです:同じ問題が当てはまりますTOP
か?言い換えると、たとえば10,000,000レコードのデータベースでこれらのクエリを実行すると、読み取り数が非常に多くなると予想できますid > 9,999,000
か?もしそうなら、これをよりよく処理する方法はありますか?