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]