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