1

SQLite で次のクエリがあるとします。

SELECT * FROM mytable ORDER BY product ASC

エンド ユーザーがスクロール可能な方法でデータを表示できるようにしたいと考えています (たとえば、Excel で現在表示可能なデータのように)。ユーザーが次のようなことをする代わりに、100 件の結果を下にスクロールした場合:

SELECT * FROM mytable ORDER BY product ASC LIMIT 50 OFFSET 100

表示可能な範囲から出るたびにクエリの実行にかかる時間を待たせるのではなく、返される結果が 25 ミリ秒以下であることを確認したいと考えています。

これを行う最良の方法は何ですか?擬似コードでは、次の行に沿って考えていました。

-- 1st time query is run
SELECT * FROM mytable ORDER BY product ASC LIMIT 50 -- in main thread
INSERT INTO queryset_cache -- in background thread
  SELECT rowid, * FROM mytable ORDER BY product ASC 

-- 2nd time query is run, offset 84,500 (user scrolls down to that position
SELECT * FROM queryset_cache ORDER BY rowid LIMIT 50 OFFSET 84500

これは、私がやろうとしていることを達成するための最良の方法でしょうか? または、SQLite で上記のようなことを行う標準化された方法はありますか? もしそうなら、これを行うための最良の方法は何でしょうか?

4

1 に答える 1