2011-01-24 74 views
0

我有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. 
+0

投票轉移到ServerFault,因爲這是一個系統管理問題,而不是編程問題。 – 2011-01-24 04:12:48

+0

請不要....這是一個MySQL問題比什麼都重要。這個板上似乎有更多的mysql專家 – 2011-01-24 04:27:28

+0

比較my.cnf文件以確保遠程主機上的配置沒有錯誤。聽起來像你已經檢查過,但確保remotehost上的addr.id上有一個索引。另外,嘗試運行「優化表名」;在遠程主機上更新統計信息。你不應該這樣做,但我不知道還有什麼建議。 – 2011-01-24 05:39:25

回答

0

請發佈mysqldump --no-data這兩個數據庫的輸出?可能他們使用不同的語言環境,ISAM類型,不同的選項等。

0

運行SHOW創建每個表TABLE和尋找差異。首先想到的是其中一臺服務器啓用了InnoDB,另一臺服務器不啓動,因此存儲引擎不同。然後查看my.cnf和SHOW VARIABLES的差異。

它也似乎你在兩個數據庫中有不同數量的行。這可能會影響計劃程序決定在執行查詢時使用的索引。

相關問題