mysql insert插入语句性能优化

2013-10-27 寒川 网页编程

最近下载了一个2000多万的mssql数据库备份文件,然后用软件将其转为mysql数据库,转过来大约3个G左右,数据占用磁盘量不大,但是数据条数还是挺多的。而且因为是从mssql转过来的缘故,全都是text类型,且除了id意外,没任何索引。如果直接用php来查询这些数据,估计没几分钟甚至几十分钟的时间是查不出任何东西的。于是乎想到了mysql分表。分表的时候是采用hash按照某个字段分的,加之自己略懂一点php,于是乎我按照自己的想法写了一个php的分表小代码:读取n条记录,php处理好后分别插入个分表中。2000万的数据,可不是开玩笑滴,那家伙,一秒钟转存100条记录都要好几秒钟。经分析,读取记录还算比较快,但是插入貌似有点慢了。于是引出了博文标题,mysql insert查询语句性能优化。

    究竟如何对insert语句性能优化呢?百度了一下,在插入语句之前和之后分别加上“START TRANSACTION;”和“COMMIT;”,不含引号,问题就得以解决了。现在插入速度那是相当快,一次插入一两千条数据,跟玩似的。注:在“START TRANSACTION;”和“COMMIT;”之间的插入语句类似为:INSERT INTO `table` ( `id`, `content`) VALUES (null, 'content') ,(null, 'content'), (null, 'content');

标签: mysql insert插入 千万级

评论(0) 浏览(6730)

access数据库中时间转mysql时间戳

2013-10-22 寒川 计算机

    今天一朋友网站需要将asp转php程序。php程序都快完成了。请我将原access数据库转为mysql数据库。这数据库转换原本是很简单的事情,现有成熟的软件也挺多。我用的是Access2MySQL Pro 5.7.1。先将access中数据表调整为与现有网站的mysql数据库一致。然后直接开转。貌似一切很顺利。打开网站查看的时候,突然才发现时间不对。进mysql数据库一看,原来access中时间格式为2012-06-07 20:20:20,转换到mysql直接成了2012了。我了个去。才发现mysql中储存时间用的是int(10),难怪出错。这要如何是好呢?问题来了自然有解决办法。我的做法如下:

    将mysql的时间数据库时间字段直接修改为varchar(100),然后将数据库转换过来,转换完成后mysql的数据类似这样:2012-06-07 20:20:20,为了使用int(10)这样储存时间戳,还需要将时间字段更新一下,使用类似如下语句:

    update `table` set `t`= UNIX_TIMESTAMP(`t`);

    这样就将mysql中日期时间直接转换成了时间错,再修改mysql数据结构,将时间字段改成int(10),至此,access数据库中时间转mysql时间戳完成。

    最后,附带一句mysql替换部分关键词的语句:

    UPDATE `table` SET `f1`=REPLACE(`f1`, 'abc', 'def');

    此语句功能就不说了,与主题没任何关系,纯属记录。就这样吧,就这样了。

标签: mysql access 时间戳

评论(0) 浏览(6468)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap