zoukankan      html  css  js  c++  java
  • sql insert语句提高效率的方法

    1,一条sql语句插入多条数据的写法

    在执行SQL语句的时候,插入多行insert语句,效率写法
    
    insert into table(name,age)
    
    values('小米',1)
    
    ,('小明',1)
    
    ,('小张',1)
    
    最多能插入999行记录

     修改后的插入操作能够提高程序的插入效率。这里第二种SQL执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。
    这里提供一些测试对比数据,分别是进行单条数据的导入与转化成一条SQL语句进行导入,分别测试1百、1千、1万条数据记录。

    2.事务中的插入处理

     就像这样:

    START TRANSACTION;
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) 
        VALUES ('0', 'userid_0', 'content_0', 0);
    INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) 
        VALUES ('1', 'userid_1', 'content_1', 1);
    ...
    COMMIT;

    使用事务可以提高数据的插入效率,这是因为进行一个INSERT操作时,MySQL内部会建立一个事务,在事务内才进行真正插入处理操作。通过使用事务可以减少创建事务的消耗,所有插入都在执行后才进行提交操作
    这里也提供了测试对比,分别是不使用事务与使用事务在记录数为1百、1千、1万的情况。

     

     两者搭配使用,效果不错。还有一个按照主键顺序插入的那个效果不咋地就不说了。注意:

    SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M,测试时修改为8M。
    
    事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以比较好的做法是,在数据达到这个这个值前进行事务提交。

     参考链接:

    https://blog.csdn.net/qq_22855325/article/details/76087138

  • 相关阅读:
    python day 09 文件操作
    day python calss08 深浅copy
    python.day05
    pytonn04day
    python开发day03
    python开发day02
    python 变量名的规范
    设备描述表
    GDI基础
    windows编程-窗口
  • 原文地址:https://www.cnblogs.com/daysn/p/11410730.html
Copyright © 2011-2022 走看看