2015-12-24 134 views
-2

我有MYISAM表,有60 000 000行。它有很多INSERTS和一些選擇(不是更新)。優化MySQL大表

執行插入塊讀取(明顯)。

我只讀取1%的行,其他99%的行將永遠不會讀取。

我想優化這個。我認爲這是一個很好的方式來創建只有流行的SELECT的重複表。

是否有任何現成的解決方案呢?我正在PHP + MySQL工作。

+2

發佈表模式,使用索引進行快速搜索 –

+1

如果您有一個auto_increment主鍵,以便INSERT全部轉到表的結尾,並且您在SELECT的WHERE子句中使用的列的合適索引你不應該有任何問題。 – SeanN

+1

你怎麼知道哪些行很受歡迎?如果大部分存儲的數據都不會被查詢,那麼爲什麼將它們存儲在第一位呢? – Shadow

回答

0

如果您有辦法找到那些不活動的行,例如,您可以使用cronjob將INSERT...SELECTDELETE表中的非活動行復制到另一個表中。如果這些行有一定的時間戳記範圍。這使您能夠在不影響大多數其他查詢的性能的情況下查找這些行。

+0

爲什麼要另一個架構? – Shadow

+0

因此,當查詢在原始模式上運行時,不需要通過龐大的表進行查找。或者這是我的錯誤理解? – SOFe

+0

1.如果這些行可以被識別,我們不知道。 2.即使你可以識別這樣的行,如果查詢只需要帶有流行記錄的表或者持有不活動表的表,那麼你如何提前區分? 3.您不需要將它們移動到不同的模式,只需將它們移動到不同的表格。 – Shadow