編輯: 實際上除了選擇不同(我還沒有驗證)之外,主要性能瓶頸可能是網絡速度,當服務器和客戶端都是在本地主機上, 選擇所有2個milion記錄花了36秒,但是,在客戶坐在另一個盒子上的(假定是高速)網絡上,查詢在10分鐘後還沒有完成。
這應該是100mbps的網絡,但是當我檢查客戶端(java jdbc)時,它以3kb /秒的速率接收數據。但是,MySQL服務器以100kb /秒的速度發送(儘管包括其他客戶端連接)。 爲什麼java jdbc客戶端以如此低的速率接收數據?MYSQL從100萬行的表中選擇不同的(indexed_column)
select distinct(indexed_column) from mytable
對mytable只有100萬行非常慢,indexed_column是一個非唯一索引。 有沒有一種方法來優化它? 的解釋給出了這樣的:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | 1 | SIMPLE | mytable | range | NULL | my_index | 50 | NULL | 1759002 | Using index for group-by |
並鍵入=範圍意味着它不使用索引?這就是爲什麼它很慢?
EXPLAIN對queryplan有什麼看法? http://dev.mysql.com/doc/refman/5.5/en/explain.html – 2011-02-25 11:11:35
什麼是'非常緩慢'?以及該列的數據類型是什麼? – krtek 2011-02-25 11:15:34
@Frank:這就是所有的解釋選擇說 – user121196 2011-02-25 11:16:18