
いつもお世話になっております。
以下のようなテーブル(news)があります。
cid(int)|nid(int)|news_date(date)|body(text)
キーは cid と nid です。
約4000件のデータからキーワードの検索をするのに
とても時間がかかってしまいます。
SQL文は以下のようにしております。
select * from news where news_date between '2008-03-03' and '2009-03-03' and nid='1' and (body regexp 'キーワード1' or body regexp 'キーワード2') order by news_date DESC
どうしたら速度が早くなるのでしょうか?
インデックスをはったりすればいいのでしょうか?
よろしくご教授お願いいたします。
<環境>
MySQL:4.1.22(utf-8)
No.2ベストアンサー
- 回答日時:
基本的に、曖昧検索は、遅いです。
インデックスは役に立ちません。
こういう、検索にはRDBMSは向いていません。
ORで、結ばれているregexpを次のようにして、2つにまとめれば、2倍弱の速度向上はできるでしょうが。
body regexp 'キーワード1|キーワード2'
No.1
- 回答日時:
>約4000件のデータからキーワードの検索をするのに
>とても時間がかかってしまいます。
ホントに4000件(?)ならSQLのデータとしてはすくない部類ですね
テキストタイプということですが、1データはどのくらいの容量なのでしょう?
テキストだとインデックスもそれほど期待できないと思います。
本質的には文字を分かち書きして全文検索にするでしょうか・・・
もしくはキーワードを抽出して別テーブルで管理するとか。
この回答への補足
yambejp さん、ご回答ありがとうございます。
> ホントに4000件(?)ならSQLのデータとしてはすくない部類ですね
> テキストタイプということですが、1データはどのくらいの容量なのでしょう?
はい。
4000件で、1データの容量はちょっと定かではありませんが
全体のデータ量は約8MBぐらいです。
詳しくご説明しないと原因の特定が難しいのは承知なのですが
想像でも結構ですので、何か他に遅くなる原因が考えられましたら
教えていただきたいです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
seoについておしえてください
-
ホームページがGOOGLEにインデ...
-
投資信託を初めて購入しようと...
-
SQL Serverの容量見積りについて
-
ACCESS 一番最新の日付の金額...
-
ACCESSのSQLで、NULLかNULLでな...
-
「マスタ」と「テーブル」の違...
-
エクセルでテーブルの最終行が...
-
AccessのSQLについて教えてくだ...
-
Accessでバージョン違いのファ...
-
不動産検索サイトのような複数...
-
SELECT文でのデッドロックに対...
-
2つの項目が重複するレコード...
-
テーブルのレコード削除ができ...
-
Access2000へのインポートエラー
-
AccessShareLock はどの程度気...
-
シャープレジスター エラーコード
-
ACCESS データベースオブジェ...
-
ManagementStudioからのデータ削除
-
アクセスのテーブルからエクス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インデックスの再構築の意味っ...
-
mysql IN句に1データだけ指定...
-
ビューにインデックスを設定で...
-
【SQLServer】IS NULLのパフォ...
-
主キーにインデックスは貼らな...
-
コクヨ タイトルブレーンでイ...
-
年と月が別カラムの場合のSQL
-
Oracleでの検索スピード
-
インデックスの領域について
-
ホームページがGOOGLEにインデ...
-
cron設定について
-
インデックスがすぐに壊れます…
-
サブクエリの使い方を教えて下...
-
効率的なインデックスのつけ方は?
-
Movable TypeとNamazuについて
-
[ BETWEEN ] vs [ >= AND <= ]
-
Google検索はなぜ早い?
-
リリポップサーバーの独自ドメ...
-
intel 945Pチップセットのパフ...
-
インデックスホールディングス...
おすすめ情報