SQLite関数あれこれ

SQLite用のDaoをごにょごにょ書いた。こんな感じで使う。SQL書きたい人なので、自分オンリーの場合はDaoを用意してSQL渡すのが好き。

<?php
require_once 'path/to/Moony.php';
Moony::import('Dao');
$dao = Moony_Dao::create('SQLite');
$dao->connect($dbFileName);
$result = $dao->query('select * from foo;');

で、SQLite関数のマニュアルを見ていると、気になる記述が。

sqlite_array_query() は与えられたクエリを実行し、 結果セット全体を配列で返します。これは、結果セットの各レコードに関して sqlite_query()に続いて sqlite_fetch_array()をコールすることに似ています。 sqlite_array_query() は前述の方法よりも著しく高速です。

PHP: sqlite_array_query - Manual

sqlite_array_queryの方がfetchするより早いってこと。ただし、sqlite_query関数は4番目の引数を使うとエラーメッセージを受け取れるけど、sqlite_array_query関数は受け取ることができない。

sqlite_array_query() は、返すレコードが45件以下 のクエリーで最も有効です。これ以上のデータがある場合には、 より性能を最適化するために、代わりに sqlite_unbuffered_query()を使用するようなスクリ プトを書くことをお薦めします。

PHP: sqlite_array_query - Manual

そして行数が増えたらsqlite_unbuffered_query関数を使った方が高速らしい。sqlite_unbuffered_query関数はエラーメッセージも受け取れるので、割といいかも。

PHP5ならPDOを使えばいいんだろうけど、sqlite関数を使う場合のメモとして。