2012-12-21 81 views
0

通過查看以下SO鏈接,我發現了大量關於索引如何在MySQL中工作的信息:How do MySQL indexes work?但是,我面臨着我無法解決的mysql問題,並且我不確定它是否與索引相關。索引在MySQL中如何工作?

問題是:我在我的大多數表中使用了多個索引,並且一切似乎都正常工作。但是,當我將舊備份數據還原到現有數據時,數據庫的大小不斷增大(每次幾乎增加一倍)。

例如:我上個星期使用了一個名爲DB1的mysql數據庫,我做了備份並繼續使用DB1。幾天後,我需要從該備份數據庫繼續,因此我將其恢復到DB1

還原之前,DB1的大小爲115MB,但之後突然350MB

任何人都可以幫助揭示可能發生的事情嗎?

+2

你如何衡量「*數據庫大小*」? – eggyal

+1

是否在恢復之前刪除數據庫並重新創建它? –

+0

您可能需要定義UNIQUE約束,以便不添加重複項。那是你想要做什麼? http://www.w3schools.com/sql/sql_unique.asp – zer0bit

回答

0

這並不奇怪。如果你有很多索引,他們佔用的空間與數據本身並不少見。

當你談論115MB與350MB雖然,我猜你增加的查詢速度可能是值得額外的幾百兆磁盤空間。如果沒有,那麼你可能想仔細看看你的索引,並確保它們都提供了一些好處。

+0

感謝您的回覆。我使用HeidiSQL(UI),我可以看到DB的大小。我也對目前的速度感到滿意。但大小讓我感到困惑。爲了您的信息:在恢復數據庫時,我使用了drop table,創建表並插入數據... – Sensa

+1

@Sensa - 該工具是否允許您分別查看每個表的數據和索引大小?如果沒有,請嘗試使用'show table status'命令,查看'data_length'和'index_length'列應該能夠很好地瞭解數據與索引的空間使用情況。 –