mysql:958
From: Takashi YAMAMOTO <Takashi YAMAMOTO <yamamoto@xxxxxxxxxx>>
Date: Thu, 10 Jun 1999 11:03:25 +0900
Subject: [mysql 00958] Re: [Q] 分割列による SELECT のスピード比較
山本です。 民斗>> 【SELECT-1】 民斗>> select * from pat1 where key01 like 'XXX%' or key01 like 'XXX%' or key03 like 'XXX%' 民斗> 民斗>2番目の like は key02 ですよね。 おっと、失礼しました。 民斗>昔、"or" 演算子は遅いと聞いたことがあります。 言われてみれば、そういう話を聞いたことが私もあります。 民斗>つまり、 民斗> select * from pat1 where key01 like 'XXX%' or key02 like 'XXX%' or key03 like 'XXX%' 民斗>とするより 民斗> select * from pat1 where key01 like 'XXX%'; 民斗> select * from pat1 where key02 like 'XXX%'; 民斗> select * from pat1 where key03 like 'XXX%'; 民斗>と3回の select のトータル時間の方が速いという…。 で、やってみると ■ORで連結 35sec ■単独で3回SELECT 0.5sec x 3 という結果でした。 単独で3回SELECTの場合、3つの結果をマージしていく処理が必要ではありますが、 こっちのが結局早いのかもしれませんね。 民斗>あと、インデックステーブルがあまりにも大きいと、ディスク I/O のオーバー 民斗>ヘッドのせいで、インデックスを使わない方が速いこともあるのかもしれません。 試したのは20万件で、ISMファイルは34430976バイトありました。 また、 ■OR連結の場合のEXPLAINの結果 +---------+------+-------------------+------+---------+------+--------+------------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +---------+------+-------------------+------+---------+------+--------+------------+ | keytbls | ALL | key01,key02,key03 | NULL | NULL | NULL | 195744 | where used | +---------+------+-------------------+------+---------+------+--------+------------+ ■単独で3回のEXPLAINの結果 +---------+-------+---------------+-------+---------+------+------+-------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +---------+-------+---------------+-------+---------+------+------+-------+ | keytbls | range | key01 | key01 | NULL | NULL | 1 | | +---------+-------+---------------+-------+---------+------+------+-------+ でした。 やっぱり、OR は 3.22 でも遅いのかしら、、、、 +======< 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]