我有2個數據庫:localhost & remotehost。本地主機似乎運行良好,並迅速得到我的結果(低於1秒...感謝這個委員會的幫助)。使用mysqldump,我將本地主機轉儲到遠程主機,包括表結構,索引,&數據。我期望remotehost是本地主機的虛擬副本,但是當我在遠程主機上運行我的查詢時,他們需要> 1分鐘才能執行。解釋說法甚至不同......有很多不同之處,包括將「類型」更改爲「範圍」以及使用的索引等等。相同的數據庫,但不同的解釋結果
(一些這也許可以通過強制使用主索引固定的,但我寧願找到問題的根源,並明白爲什麼遠程主機的行爲有所不同)
我聲明:
SELECT names.id, names.first, addr.last FROM names, addr WHERE names.first LIKE 'H%' AND addr.last IS NOT NULL AND names.id = addr.id GROUP BY names.id LIMIT 10
EXPLAIN語句從本地主機:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|index|PRIMARY,first |PRIMARY|4 |NULL |448 |Using where
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
從遠程主機EXPLAIN語句:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|range|PRIMARY,first |first |903 |NULL |955 |Using where; Using temporary; Using filesort
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
UPDATE:
Localhost is using mysql version 5.1.46-log.
Remotehost is using mysql version 5.0.91-log.
投票轉移到ServerFault,因爲這是一個系統管理問題,而不是編程問題。 – 2011-01-24 04:12:48
請不要....這是一個MySQL問題比什麼都重要。這個板上似乎有更多的mysql專家 – 2011-01-24 04:27:28
比較my.cnf文件以確保遠程主機上的配置沒有錯誤。聽起來像你已經檢查過,但確保remotehost上的addr.id上有一個索引。另外,嘗試運行「優化表名」;在遠程主機上更新統計信息。你不應該這樣做,但我不知道還有什麼建議。 – 2011-01-24 05:39:25