CatShanty2メンテサポート&雑談掲示板
CatShanty2 の質問やバグ報告など
Re: クエリ検索等での検索時間が遅い
hey_kitarou 2014/04/14 23:45:20
ども作者です。

"sqlite equal like speed" とかでググると色々出てきますね。

定石では "=" のほうが速いことになっているけど、
"LIKE" は全文字列をチェックする前にマッチした段階でスキップするから速いんじゃないかとか。

これまでもsqlite3(.dll)のバージョンに寄っては、速くなったり遅くなったり、時には動かなかったりしてました。

例えば個人的に「1ヶ月以内に追加・更新したもの」という以下のクエリを用意しています。

SELECT * FROM list_view NATURAL JOIN main_table WHERE modify >= date('now', '-1 months') ORDER BY modify DESC;

チョット前のdllでは動かなくなりましたが、最近また動くようになりました。
でもすごく遅くなりました。

動かなかった時に代替で以下のSQLを書きました。

SELECT * FROM list_view WHERE file_name IN ( SELECT file_name FROM main_table WHERE modify >= date('now', '-1 months') );

速度はコッチが速かったです。

CatShanty2では定石通り、内部では "=" で処理してあります。
SQLite側が将来的にどうなるかわかりませんし。定石通りのほうが良いでしょう。

akHさんの書いたSQLの "=" と "LIKE" の件は、
「近々のsqlite3を使う上でのスピードアップテクニック」と言う事で有用ではないでしょうか。
どのように書くかはユーザーさんの自由ということで、そこもまた楽しいですし。


引用しない
 編集キー

【この記事の返信元】
Re: クエリ検索等での検索時間が遅いaKH 2014/04/14 22:36:46