Devneko.net

基本的なつかい方

DBのオープンからクローズまで

db = SQLite3::Database.new("data.db")
db.execute("select * from test_table") {|row|
  # 行ごとの処理
}
db.close

SQLにパラメータを埋め込む

?をプレースホルダーとして使用できる。パラメータはexecuteの第2引数に指定する。

db.execute("select * from test_table where id = ?", id)

複数クエリーの同時発行

execute_batchを使用する。SQLはセミコロンで区切る。

db.execute_batch("sql1; sql2; ...")

SQLite3::BusyExceptionを回避する

db.busy_timeout(2000) # タイムアウトまでの時間(ms)を指定する

最適化

JOIN

SQLiteのJOIN(表結合)はとても遅い。これは結合は全てNested Loopで行われることが原因のようだ。

参考 http://www.sqlite.org/optoverview.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS