私は lsqlite3 lua ラッパーを使用しており、クエリをデータベースに作成しています。私のDBには約500万行あり、行を取得するために使用しているコードは次のようなものです:
db = lsqlite3.open('mydb')
local temp = {}
local sql = "SELECT A,B FROM tab where FOO=BAR ORDER BY A DESC LIMIT N"
for row in db:nrows(sql) do temp[row['key']] = row['col1'] end
N
ご覧のとおり、一番上の行を降順で並べ替えようとしています(一番上の行を取得してから、逆ではなくFOO
適用したい)。LIMIT
列にインデックスを付けましたA
が、大きな違いはないようです。どうすればこれをより速くすることができますか?