sidewalkcafe blog

日々是好日

やってて良かったSQLite

範囲呼び出しの話
SQliteには BETWEEN というそのままな呼び出しコマンドがあった

select * from bbs where id BETWEEN 1 and 20

別にwhereで囲んでも結果は同じなんだけど、どっちが早いんだろ?

select * from bbs where id > 1 and id < 20


親記事の数を数える話
もとはtree.logの行数をcount()してたけど
sqlの場合、count(*)を使う

select count(*) from bbs where parent > 0

値の取得はforeachじゃなくて、1行取得のfetchを使うらしい

$query->fetchColumn();


レスコメント表示の話
DSP_RESで一覧画面のレス表示件数、DSP_RESIMGでレス内の画像表示件数が指示されてるので
レス取得のクエリに limitをつける

select * from bbs where tree == $res limit DSP_RES

ただ、クエリ内で定数が使えなかったので変数に格納して呼び出す


画像表示件数は画像をカウントして指定数になるとbreakする

$c_img = (DSP_RES)? 0:null;
if($filename) $c_img ++
if($c_img >= DSP_RES)break;

という訳で三項演算子
ifより少しばかり遅いけど記載が短くなるから好き


って三項演算子の速度比較みてたら

三項演算子よりも暗黙の型変換のほうが、速度低下が大きい

なんですとー!!

$a = '0';
$a ++

こういう記載よくやるけど駄目なんか