【发布时间】:2011-02-25 11:08:56
【问题描述】:
编辑:
实际上除了 select distinct(我还没有验证),主要的性能瓶颈可能是网络速度,当服务器和客户端都在本地主机上时,
选择所有 200 万条记录需要 36 秒,但是,在(假设是高速)网络上,客户端位于另一个盒子上,10 分钟后查询尚未完成。
这应该是 100mbps 网络,但是当我检查客户端时(java jdbc),它以 3kb/秒的速率接收数据。然而,mysql 服务器以 100kb/sec 的速度发送(尽管包括其他客户端连接)。
为什么java jdbc客户端接收数据的速率这么低?
在只有 100 万行的 mytable 上非常慢,indexed_column 是一个非唯一索引。 有没有办法优化它? 一个解释给出了这个:
编号 |选择类型 |表|类型 |可能的键 |关键 | key_len |参考 |行 |额外的 | 1 |简单 |表 |范围 |空 |我的索引 | 50 |空 | 1759002 |使用索引进行分组 |type=range 是否意味着它没有使用索引?这就是它慢的原因吗?
【问题讨论】:
-
EXPLAIN 对查询计划有什么看法? dev.mysql.com/doc/refman/5.5/en/explain.html
-
什么是“非常慢”?该列的数据类型是什么?
-
@Frank:这就是全部的解释选择说
-
@Krtek:数据类型是varchar(50),花了3个小时,还在继续。
-
3 小时 ??对我来说似乎只有 100 万行是不可能的,你确定数据库没有被锁定或损坏吗?
标签: mysql optimization