我正在编写一个Django-ORM功能,尝试缓存模型并推迟模型保存,直到事务结束。这几乎完成了,但是我遇到了SQL语法中的意外困难。

我不是一个DBA,但从我的理解,数据库不能真正有效地为许多小的查询。几个更大的查询好多了。例如,最好使用大批量插入(一次说100行),而不是使用100个单线程。

现在,从我可以看到,SQL并没有提供任何语句来对表执行批量更新。这个词似乎令人困惑,所以我会解释一下我的意思。我有一个任意数据的数组,每个条目描述一个表中的一行。我想更新表中的某些行,每行使用数组中相应条目的数据。这个想法与批量插入非常相似。

例如:我的表可以有两列“id”和“some_col”。现在,描述批量更新数据的数组由三个条目(1,’first updated),(2,’second updated’)和(3,’third updated’)组成。更新之前,表格包含:(1,’first’),(2,’second’),(3,’third’)。

我来过这个帖子:

这似乎做了我想要的,但是我不能真正弄清楚语法的结尾。

我也可以删除所有需要更新的行,并使用批量插入重新插入,但是我觉得很难相信这实际上会更好。

我使用PostgreSQL 8.4,所以一些存储过程也可能在这里。然而,随着我计划最终开源项目,任何更多便携式的想法或方式在不同的RDBMS上做同样的事情是最受欢迎的。

跟进问题:如何做一个批处理“insert-or-update”/“upsert”语句?

检测结果

我执行了100次10次插入操作,分布在4个不同的表中(总共有1000个插入)。我在Django 1.3上测试了PostgreSQL 8.4后端。

结果如下:

>所有操作都通过Django ORM完成 – 每次通过〜2.45秒,

>同样的操作,但没有Django ORM完成 – 每次通过〜1.48秒,

>只能插入操作,而不查询数据库的序列值〜0.72秒,

>只能插入10个块(总共100个块)〜0.19秒的块,

>只插入操作,一个大执行块〜0.13秒。

>仅插入操作,每个块约250个语句,〜0.12秒。

结论:在单个connection.execute()中执行尽可能多的操作。 Django本身引入了大量的开销。

免责声明:除了默认主键索引之外,我没有引入任何索引,因此插入操作可能运行得更快。

pg批量插入_在PostgreSQL中批量/批量更新/提升相关推荐

  1. python加数据库_用python批量插入数据到数据库中

    既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...

  2. 批量插入以及数据存在重复就进行更新操作

    批量插入以及数据存在重复就进行更新操作 示例: /*** 批量更新** @param guiYangStationInfos*/ private void updateStationInfos(Str ...

  3. ado.net mysql 批量插入_[Dapper].NET/C#程序开发中使用Dapper批量插入数据集合的方法应该如何实现?...

    问题描述 使用Dapper如何向数据库中批量插入数据或者说使用Dapper如何插入一个集合(List),在没有使用Dapper(使用Ado.net)的情况下,我们通常的实现方式如下: try { co ...

  4. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  5. Java通过Mybatis实现批量插入数据到Oracle中

    最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目 ...

  6. sql 一次性批量插入_考虑使用SQL批量插入的安全性

    sql 一次性批量插入 In this article, we'll discuss security implications of using SQL Bulk Insert and how to ...

  7. wps如何删除括号里的内容_文档中怎么批量去除括号里面的答案 - 卡饭网

    在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母?          步骤 1.点击office word2 ...

  8. jpa的批量修改_如何使用JpaRepository进行批量(多行)插入?

    从服务层长时间调用saveAllmy方法时,Hibernate的跟踪日志记录显示每个实体发出单个SQL语句.JpaRepository``List 我可以强迫它进行批量插入(即多行),而无需手动处理E ...

  9. 将excel数据批量插入到数据库表中

    项目实例结构: 1.model实体类 package com.model;public class Test {private int num1;private String num2;private ...

最新文章

  1. iOS NSRunloop 详解
  2. R语言实战应用精讲50篇(一)-万字长文干货R语言ggplot2包图形绘制
  3. linux kernel defconfig和.config
  4. 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的
  5. fir.im同款企业级APP分发平台系统源码
  6. python异常处理有什么意义_怎么学好Python异常处理 五种处理机制是什么
  7. 黑苹果mac未能安装在你的电脑上_mac电脑上全新视频剪辑软件安装包分享,让你剪辑视频从此无忧!...
  8. ps5手柄连接android,PS5游戏手柄甚至可以兼容安卓设备?这一次有的玩了
  9. 51Nod - 1384 全排列
  10. 论软件架构建模技术与应用
  11. Android热修复-Robust
  12. win7计算机管理无用户账户,win7系统右键没有以管理员身份运行解决方法
  13. C#实战012:Excel操作-获取Excel某一行数据并存入数组
  14. android 跨屏效果图,手机电脑二合一:小米妙享跨屏协作正式上线
  15. [渗透教程]-006-渗透测试-Metasploit以及实战教程
  16. vue的sync修饰符
  17. sqlserver2008R2在配置复制分发时报错:在执行xp_cmdshell的过程中出错
  18. Android车载Launcher开发(1) - 显示Widget
  19. Synology 搭建双机冗余High Availability服务
  20. 服务器虚拟化软件的结构组成和各组件的主要功能与作用

热门文章

  1. VMware vSAN 的内部版本号和版本 (2150753)--2020-10-27 更新
  2. Java设计模式学习总结(15)——行为型模式之责任链模式
  3. Java基础学习总结(156)——那些年被淘汰的Java技术及框架
  4. linux 多线程并行计算,浅谈.NET下的多线程和并行计算(五)线程池基础上
  5. web dialog 内嵌 图片_Unity游戏如何在iOS上调用Facebook原生对话框分享图片
  6. python用xlrd怎么清洗数据_利用Python进行数据清洗
  7. java自学难点_分享在达内教育培训Java的感受
  8. java 一一对应的替换_java 如何实现按表替换
  9. 项目的权限设计的小计
  10. linux查看端口被哪个服务占用的命令