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]