[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