[SQL ] MySQL 大型資料表建立索引

作者: espeondoug (殘雪)   2018-04-19 16:57:17
資料庫名稱:MySQL
資料庫版本:5.7
內容/問題描述:
我有數個筆數為10~40億左右的資料表(MyISAM引擎),想用其中某1或2個varchar類型
的欄位(有重複)建立索引,目的是為了將資料表根據該欄位的名稱匯出成多個小檔案
想問說有沒有什麼方法在現有的表上加快建立索引?(例如調my.ini裡的參數之類的?)
試過幾次create index,但看了建立的速度推測起碼都要好幾天...
以及,對於這樣規模的資料表,是先匯入資料再建立索引、還是先建立索引再匯入資
料會比較快呢?(目前在建新的資料表時是採用後者順序,但一樣很慢)
新手發問,懇請協助,謝謝各位
作者: iFEELing (ing)   2018-04-19 22:20:00
先建索引再匯資料的話不是每筆INSERT都要去改INDEX嗎...你講的蠻籠絡的 基本上建索引就是整個爬過一次的行為有多少資料就要爬多少資料 這個免不了的只是有些剛好符合某種特定情況下有機會優化籠統 ORZ比如分區表,比如並行 這些都是在特定條件下可以用的招可是用的時機不對就會讓效能更慘 所以也不是都通用
作者: jeamie (jeamie)   2018-04-19 23:05:00
看到MyISAM就GG了,建議改成InnoDB,可以做Online DDLcreate index的速度還滿快的(但也要看硬體速度啦)
作者: espeondoug (殘雪)   2018-04-20 10:08:00
感謝兩位大大回覆,一些必要的動作看來是不能省的我會改成再試試先匯完資料後建立索引這資料庫是近期才交到我手上負責維護,當時已經是MyISAM了,大概不方便改@@
作者: rockchangnew (rock)   2018-04-26 15:19:00
先匯再建

Links booklink

Contact Us: admin [ a t ] ucptt.com