我使用MySQL 5.1.34,所有表都在Innodb Engine中。MySQL缓慢查询尽管EXPLAIN显示较少的行
我有如下3个表:
TableA (1M rows)
-ID (Auto Increment PK)
-TableB_ID
-Date varchar(indexed)
-Other Fields
TableB (60M rows)
-ID (Auto Increment PK)
-TableC_ID
-Other Fields
TableC (10M rows)
-ID (Auto Increment PK)
-Other Fields
我的目标是参加3个表,其匹配在表A的“日期”。 “日期”列被索引,一个简单的WHERE子句可以在秒内完成。例如。
SELECT * FROM TableA where date = '2015-03-13';
10000 rows in set (0.1 sec)
但是,当我尝试使用下面的SQL连接TableB和TableC时,该过程变得非常慢。
SELECT A.*, C.Something FROM TableA A JOIN TableB B on A.TableB_ID = B.ID JOIN TableC C on B.TableC_ID = C.ID WHERE A.date = '2015-03-13';
10000 rows in set (20 sec)
我试着用EXPLAIN命令排除缓慢,输出如下。
可能是什么原因?请帮忙!
磁盘求.. ..? – 2015-03-13 10:57:14
“A.TableB_ID”和“B.TableC_ID”是否被索引? – 2015-03-13 10:57:25
@AbhikChakraborty EDITED。对不起,是A.TableB_ID和B.TableC_ID被索引。 – 2015-03-13 11:00:11