2011年8月30日

[mysql 15623] mysql 5.5.9でのset namessjisで性能低下

sumiyaといいます。

環境:
OS: Windows server 20008 r2 64bit
mysql: mysql-5.5.9-winx64.zip

mysql 5.1.56では問題ないquery がmysql 5.5.9で性能が出ない問題があ
り調べたところ、set namesが関係していることが分かりました。

以下のサンプルで、"set names latin1"を実行すると、t2 のrowsが1とな
り、期待した結果となりますが、"set names sjis"を実行すると、t2の
rowsが10となり、indexがきかず、全スキャンかかってしまうようです。

バグのような気もするのですが、これは、仕様上しょうがないことなので
しょうか?

---- ここから
create database db DEFAULT CHARSET=sjis;
create table t1 (
id int,
dt datetime,
tm time)
ENGINE=MyISAM DEFAULT CHARSET=sjis;

create table t2 (
name varchar(32),
tm time,
v varchar(255),
INDEX ix(name,tm)
) ENGINE=MyISAM DEFAULT CHARSET=sjis;

insert into t1 values(1,'2011-08-30 20:01','20:01');

insert into t2 values('n1','20:00','v1');
insert into t2 values('n1','20:01','v1');
insert into t2 values('n1','20:02','v1');
insert into t2 values('n1','20:03','v1');
insert into t2 values('n1','20:04','v1');
insert into t2 values('n1','20:05','v1');
insert into t2 values('n1','20:06','v1');
insert into t2 values('n1','20:07','v1');
insert into t2 values('n1','20:08','v1');
insert into t2 values('n1','20:09','v1');
insert into t2 values('n1','20:10','v1');

set names latin1;
explain SELECT t2.name,t1.tm,t2.v FROM t2,t1 WHERE t2.name='n1' AND t2.tm
=t1.tm AND date(t1.dt)='2011-08-30';

+----+-------------+-------+--------+---------------+------+---------+----------
---+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref
| rows | Extra |
+----+-------------+-------+--------+---------------+------+---------+----------
---+------+-------------+
| 1 | SIMPLE | t1 | system | NULL | NULL | NULL | NULL
| 1 | |
| 1 | SIMPLE | t2 | ref | ix | ix | 71 | const,con
st | 1 | Using where |
+----+-------------+-------+--------+---------------+------+---------+----------
---+------+-------------+
2 rows in set (0.03 sec)

set names sjis;
+----+-------------+-------+--------+---------------+------+---------+-------+--
----+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | r
ows | Extra |
+----+-------------+-------+--------+---------------+------+---------+-------+--
----+-------------+
| 1 | SIMPLE | t1 | system | NULL | NULL | NULL | NULL |
1 | |
| 1 | SIMPLE | t2 | ref | ix | ix | 67 | const |
10 | Using where |
+----+-------------+-------+--------+---------------+------+---------+-------+--
----+-------------+
2 rows in set (0.03 sec)
---- ここまで


投稿者 xml-rpc : 2011年8月30日 20:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/106024
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。