mysql:15623
From: Etsuo SUMIYA <Etsuo SUMIYA <sumiya-e@xxxxxxxxxx>>
Date: Tue, 30 Aug 2011 20:29:54 +0900 (LMT)
Subject: [mysql 15623] mysql 5.5.9でのset names sjisで性能低下
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)
---- ここまで
-> 15623 2011-08-30 20:29 [Etsuo SUMIYA <sumiya] mysql 5.5.9でのset names sjisで性能低下 15624 2011-08-31 12:33 ┗[HIRATSUKA Sadao <hir] 15625 2011-08-31 18:27 ┗[Etsuo SUMIYA <sumiya] 15626 2011-09-01 09:50 ┗[HIRATSUKA Sadao <hir]