2

傍晚,MySQL:使用索引在大型表格上執行更新

我有一個大而簡單的表格,有近3000萬行。該表有大多數列的索引。執行任何更新需要很長時間,我想知道刪除索引並在我完成對錶的更改後重新構建它們是個好主意?

我問的原因是因爲我已經閱讀了一些關於人們無法在大表上重建索引的文章。但是,我不明白爲什麼應該如此,因爲我可以在20分鐘內從2.2GB文本文件導入此表。

該表由幾個小整數和變量組成。

我跑了更新查詢是這樣的:

UPDATE census SET rCo = 11470 WHERE rCo = 'Zet'; 

他們不是太慢了,但我目前改變從varchar領域之一(4)爲varchar(8),它採取了非常長時間。

我從命令行(Linux)運行更新查詢。

+2

請發佈您的更新查詢。它可能只是一個表現不佳的查詢。 – Jared

+1

從哪裏更新它? – Sebas

+0

我已經在查詢中添加了det.s以及它們從哪裏運行。 –

回答

2

我認爲你應該保持索引,因爲你在where子句中使用它。

在另一方面,我敢肯定,你應該建立,而建立一個全新的表格:

CREATE TABLE census_2 (...) 
SELECT ..., IF(rCo = 'Zet', 11470, rCo) FROM census 

,然後刪除舊的,以後+上重新創建新的一個指標。

+0

我有很多查詢在表上運行來更新它。我用一種名爲FolioViews的過時的15年數據格式構建它。正如你可以猜到它是一個完整的混亂> 無論如何。我重新啓動了我的電腦,似乎已經做到了。在經過6小時的數據處理和數據插入之後,它肯定已經陷入了不利的地方:) 感謝您的時間。 –

+0

不客氣! HF。 – Sebas