现在的位置: 首页 > 综合 > 正文

边学边用Mysql(2):索引的作用

2013年10月02日 ⁄ 综合 ⁄ 共 570字 ⁄ 字号 评论关闭
关于mysql索引最好的文章是这一篇:

MySQL索引分析和优化

里面涉及的东西就不说了,写写我实际碰到的一些东西吧。

1、加了索引以后性能能提高很多吗?
肯定啦。我们有一个表,数据大约有500万,大概结构是:
id  主键
md5 会重复
......

程序中会对md5进行频繁的查询,没有对md5创建索引前4000次查询需要30分钟,创建索引后不到一秒。

2、不禁用索引来导入海量数据会怎么样?
MyISAM数据库,没有禁用索引前,用程序从另一个数据库导入
250万笔数据(因为字段不同,不能直接导入)。要2个小时导入100万,6个小时才180万。
禁用索引后,不到2个小时全部完成。
××××××
使用load data导入数据,如果导入的表是MyISAM的,对于空表,MySQL会把所有的非唯一索引进行一次独立的处理,而对于非空的表则会边插入边建索引。
所以对于非空的MyISAM表,需要用alter table xxx disable keys禁用索引,导入完成之后再用alter table xxx enable keys打开。
对于innodb,从测试的结果看无论表中是否已有记录,索引都是单独处理的,所以无需禁用索引。

使用INSERT,应该利用允许在单个语句中指定多行的形式
INSERT INTO table(a,b,c) values(1,2,3),(4,5,6),(...)...

抱歉!评论已关闭.