脚踏实地、勇往直前!
全部博文(1005)
分类: Mysql/postgreSQL
2014-08-27 16:33:13
我这里的insert_sql.sql是自己生成的,里面就是insert语句,读者可以自己根据情况加载数据
[mysql@node2 shell]$ time mysql -h node2 -uroot -D hxl -p
Enter password:
real 2m15.287s
user 0m10.397s
sys 0m9.032s
Database changed
加载记录数
mysql> SELECT COUNT(1) FROM tb_dic_class_myisam;
+----------+
| COUNT(1) |
+----------+
| 2000000 |
+----------+
1 row in set (0.00 sec)
3.创建有主键以及索引的表
CREATE TABLE `tb_dic_class_myisam_idx` (
`class_id` int(11) NOT NULL,
`class_name` varchar(20) NOT NULL,
`createtime` datetime DEFAULT CURRENT_TIMESTAMP,
`modifytime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`class_id`),
KEY `idx_tb_dic_class_myisam_n1` (`class_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
这个使用在数据文件里会生成如下的两个文件
tb_dic_class_myisam_idx.frm
tb_dic_class_myisam_idx.MYI
4.用读取锁刷写该表
lock table tb_dic_class_myisam_idx read;
5.重命名有索引表的frm和myi文件
mv tb_dic_class_myisam_idx.frm tb_dic_class_myisam.frm
mv tb_dic_class_myisam_idx.MYI tb_dic_class_myisam.MYI
6.释放锁
unlock tables;
7.使用repair table创建表的索引
repair table tb_dic_class_myisam;
8.查看之前没有索引的表的结构
CREATE TABLE `tb_dic_class_myisam` (
`class_id` int(11) NOT NULL,
`class_name` varchar(20) NOT NULL,
`createtime` datetime DEFAULT CURRENT_TIMESTAMP,
`modifytime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`class_id`),
KEY `idx_tb_dic_class_myisam_n1` (`class_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
可以看到该表上已经有主键和索引了,达到了快速创建索引的目的,整个操作速度是非常快的,不过有一定的风险,大家在操作的时候事先要备份好数据。
-- The End --