[前][次][番号順一覧][スレッド一覧]

mysql:955

From: Takashi YAMAMOTO <Takashi YAMAMOTO <yamamoto@xxxxxxxxxx>>
Date: Thu, 10 Jun 1999 00:26:21 +0900
Subject: [mysql 00955] [Q] 分割列による SELECT のスピード比較

はじめまして、山本@リクルートと申します。

早速ではありますが、以下のことで思案していまして、みなさまの
お知恵を拝借できればと思っております。


思案している内容というのは、キーワードのような複数のデータを検索する際の
パフォーマンスをあげる方法についてです。

たとえば、3つのキーワードを格納するために2つのパターンで
テーブルを作ります。

【1つ1つ別々に格納】
create table pat1 (
  key01 char(100),
  key02 char(100),
  key03 char(100)
  index key01,
  index key02,
  index key03
);


【3つをTabなんかでつないで1文字列にして1つに格納】
create table pat2 (
  keys text
);


のようなテーブルを作ったとします。(細かいパラメータは無視してください)

このテーブルに

【SELECT-1】
 select * from pat1 where key01 like 'XXX%' or key01 like 'XXX%' or key03 like 'XXX%'

というのを投げるのと

【SELECT-2】
 select * from pat2 where keys like '%XXX%';

とでは、どちらが早いでしょうか?

なんとなくですが、'%XXX%' を使うSELECT-2より、indexを使ったSELECT-1の方が
早いと予想していたのですが、

なんと

SELECT-1 : 約30sec
SELECT-2 : 約5sec

 (実際は、3個ではなく12個のキーワード、かつ20万件で mysql3.22.22 の場合の速度です)

と、SELECT-2 の方が早かったのです。

どうしてか、ちょっと悩んじゃいました。

みなさまの解説をお聞きできればありがたいのですが、、、、


+======< Internet-Mail: yamamoto@xxxxxxxxxx >=====+
      Takashi YAMAMOTO      |       山本  高志
      Recruit Co.,Ltd.      |    (株)リクルート
   Datacast Business Div.   |  プロジェクト推進グループ
+=============< URL: http://www.isize.com/ >=============+

[前][次][番号順一覧][スレッド一覧]

->     955 1999-06-10 00:26 [Takashi YAMAMOTO <ya] [Q] 分割列による SELECT のスピード比較  
       956 1999-06-10 09:25 ┣[KATSURO Tomokazu <to]                                       
       957 1999-06-10 10:47 ┗[民斗 <tommy@xxxxxxxx]                                       
       958 1999-06-10 11:03  ┗[Takashi YAMAMOTO <ya]                                     
       959 1999-06-10 11:12   ┣[<endo@xxxxxxxxxx>   ]                                   
       960 1999-06-10 13:01   ┃┗[民斗 <tommy@xxxxxxxx]                                 
       963 1999-06-10 13:16   ┃ ┗[<endo@xxxxxxxxxx>   ]                               
       961 1999-06-10 13:17   ┣[民斗 <tommy@xxxxxxxx]                                   
       962 1999-06-10 13:26   ┗["MINOHATA Norio" <mi]