いつもお世話になっております。
以下のようなテーブル(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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php エラー 2 2022/10/23 16:43
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL select *, `人口(男)`AND`人口(女)`/'面積' as '人口密度'FROM … 1 2023/07/03 21:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インデックスの再構築の意味っ...
-
[ BETWEEN ] vs [ >= AND <= ]
-
インデックスされるクエリスト...
-
テキスト項目255ケタのメリット...
-
キーワード検索の方法
-
インデックスが無効になっている
-
ホームページ内検索の作り方
-
mysql IN句に1データだけ指定...
-
SQL2000でのインデックスのクラ...
-
【SQLServer】IS NULLのパフォ...
-
ビューにインデックスを設定で...
-
「マスタ」と「テーブル」の違...
-
ACCESS 一つのフィールドに複...
-
ビューで引数を使いたい
-
Accessで更新した項目の抽出
-
データの二重表示の原因
-
accessのエクスポートエラーに...
-
ACCESS SQLステートメントにつ...
-
アクセス 日付抽出(年月のみ)...
-
ACCESSのSQLで、NULLかNULLでな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[ BETWEEN ] vs [ >= AND <= ]
-
主キーにインデックスは貼らな...
-
【SQLServer】IS NULLのパフォ...
-
ビューにインデックスを設定で...
-
mysql IN句に1データだけ指定...
-
インデックスの再構築の意味っ...
-
コマンドプロンプト エラー
-
年と月が別カラムの場合のSQL
-
投資信託を初めて購入しようと...
-
コクヨ タイトルブレーンでイ...
-
数学でunprimedとは何を意味し...
-
ホームページがGOOGLEにインデ...
-
テキスト項目255ケタのメリット...
-
複数のDBでjoinする場合のindex...
-
500Gのテキストファイルから全...
-
サーバ負荷を抑える大量データ...
-
毎月10万円投資資金があるとし...
-
indexの使用頻度を調べる方法
-
outlook2007 検索できないんです
-
インデックスされるクエリスト...
おすすめ情報