テーブルで最新の 5 つのレコードを取得したいのですが、これまで試してみましたが、うまくいきませんでした。では、テーブルの最後の 5 つのレコードを取得する最もクリーンで効率的な方法は何ですか?
"select * from (select * from People order by Date DESC limit 5) order by Date ASC;"
あなたのクエリは問題なく動作します。
Date
効率的にするために、列に索引があることを確認してください。その場合、SQLite はインデックスとテーブルから最後の 5 つのエントリを読み取るだけで、テーブル全体をスキャンする必要はありません。
このテーブルに自動インクリメント ID 列があり、「最新」が挿入順序を意味する場合、その ID を並べ替えに使用できます。これは、次のインデックスを使用した元のクエリと同じくらい効率的Date
です。
SELECT * FROM (SELECT * FROM People
ORDER BY _id DESC
LIMIT 5)
ORDER BY Date ASC