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関数を使う場合のメモとして。