2009-02-27 18:45:26
BlognはDB(データベース)に記録している中身を全部引っ張り出してから自力で検索しているので遅いわけです。
本来、DBは効率よくデータを管理するものですから、DBで直接検索する方がスマートなわけです。(早いし)
SQLインジェクションが怖いですけど…
ってことで、blognの使ってるテーブルに直接SQL叩いてテストしてみました。
ここのDBはVerが古いのでUTF-8には対応してないようで、文字化けした状態で記録されてます。(DBは追々VerUPされるそうですが)
UTF-8の文字コードで検索をかければヒットはするんですが、全部ヒットするわけでもないようです(^^;
この書き込み前のログを「あ」で検索した場合のヒット数 (コメントなどは使っていないのでそちらは無視します)
blognから検索:512件
WHERE title like '%あ%' OR mes like '%あ%' OR more like'%あ%'で検索:461件
WHERE BINARY title like '%あ%' OR BINARY mes like '%あ%' OR BINARY more like'%あ%' で検索:512件
ということで BINARY 入れて検索すれば大丈夫な模様。
ただ、これだとアルファベットの大文字小文字を区別してしまうのが弱点です。
アルファベットだけ BINARY なしで検索をかけると大丈夫なのかな…。
この辺の自信がありませんが、そういう方向で組んでみたいと思います。
今日はここまで(^^;
本来、DBは効率よくデータを管理するものですから、DBで直接検索する方がスマートなわけです。(早いし)
SQLインジェクションが怖いですけど…
ってことで、blognの使ってるテーブルに直接SQL叩いてテストしてみました。
ここのDBはVerが古いのでUTF-8には対応してないようで、文字化けした状態で記録されてます。(DBは追々VerUPされるそうですが)
UTF-8の文字コードで検索をかければヒットはするんですが、全部ヒットするわけでもないようです(^^;
この書き込み前のログを「あ」で検索した場合のヒット数 (コメントなどは使っていないのでそちらは無視します)
blognから検索:512件
WHERE title like '%あ%' OR mes like '%あ%' OR more like'%あ%'で検索:461件
WHERE BINARY title like '%あ%' OR BINARY mes like '%あ%' OR BINARY more like'%あ%' で検索:512件
ということで BINARY 入れて検索すれば大丈夫な模様。
ただ、これだとアルファベットの大文字小文字を区別してしまうのが弱点です。
アルファベットだけ BINARY なしで検索をかけると大丈夫なのかな…。
この辺の自信がありませんが、そういう方向で組んでみたいと思います。
今日はここまで(^^;