循环插入表,多字段能很慢
循环插入表,多字段会很慢
客户表,里面有一百多个字段,写了个存储过程,里面用循环了insert into,循环30000次,耗时要半个多小时,这个正常吗?有什么方法可以加快速度
呢?
------解决方案--------------------
排除 INSERT 部分,仅 SELECT 部分运行时间多少。
如果 INSERT 和 SELECT 差异很大,那么:
除了聚集索引,其他的索引、外键都删除,再试试。
全部测试数据插入后再重建。
客户表,里面有一百多个字段,写了个存储过程,里面用循环了insert into,循环30000次,耗时要半个多小时,这个正常吗?有什么方法可以加快速度
------解决方案--------------------
排除 INSERT 部分,仅 SELECT 部分运行时间多少。
如果 INSERT 和 SELECT 差异很大,那么:
除了聚集索引,其他的索引、外键都删除,再试试。
全部测试数据插入后再重建。
相关推荐
- 数据库中的索引 除此之外还有全文索引,即FULLTEXT 其他的如空间索引SPATIAL,了解即可,几乎不用 我们可以在创建上述索引的时候,为其指定索引类型,分两类 不同的存储引擎支持的索引类型也不一样 方式一 方式二 方式三 查看 1. 准备表 2. 创建存储过程,实现批量插入记录 3. 查看存储过程 4. 调用存储过程 无索引:mysql根本就不知道到底是否存在id等于333333333的记录,只能把数据表从头到尾扫描一遍,此时有多少个磁盘块就需要进行多少IO操作,所以查询速度很慢 没有为name添加索引,查询速度很慢 添加索引后,查询速度变快 查询速度变慢,因为无法从树的某个位置得到一个明确的范围,需要类似全表扫描. id字段有索引所以查询速度很快 索引字段id参与了计算,无法拿到一个明确的值去索引树中查找,每次都得临时计算以下,所以速度变慢 排序条件为索引,则select字段必须也是索引字段,否则无法命中 原子操作 出现异常,回滚到初始状态 我们要做的是检测这几个sql语句是否异常,没有异
- 小弟我想向一张表循环插入一个数组,比如有字段A/B,A是序列NEXTVAL插入,B是数组的每个元素,序列、数组已知,怎么整理这个SQL
- Mybatis面试题 MyBatis 编程步骤 MyBatis 的工作原理 mybatis功能架构 为什么使用预编译 Mybatis 的Xml 映射文件中, 不同的Xml映射文件, id是否可以重复? Mybatis 是如何将sql 执行结果封装为目标对象并返回的?都有哪些映射形式? Mybatis 是否可以映射Enum 枚举类? MyBatis 如何执行批量插入? Mybatis 是如何进于分页的?分页插件的原理是什么? 模糊查询like 语句该怎么写? #{}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样, 怎么办? 通常一个Xml 映射文件, 都会写一个Dao 接口与之对应,请问, 这个Dao 接口的工作原理是什么? Dao 接口里的方法,参数不同时, 方法能重载吗? Mybatis 是如何将sql 执行结果封装为目标对象井返回的?都有哪些映射形式? 在mapper 中如何传递多个参数? Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么? mybatis缓存 使
- Mysql insert声明优化 1) 假设你同一时候从同一客户插入非常多行,使用多个值表的INSERT语句。这比使用分开INSERT语句快(在一些情况中几倍)。 Insert into test values(1,2),(1,3),(1,4)…2) 假设你从不同客户插入非常多行。能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含义是让insert 语句立即运行,事实上数据都被放在内存的队列中,并没有真正写入磁盘。这比每条语句分别插入要快的多;LOW_PRIORITY刚好相反,在全部其它用户对表的读写完后才进行插入。3) 将索引文件和数据文件分在不同的磁盘上存放(利用建表中的选项)。4) 假设进行批量插入。能够添加bulk_insert_buffer_size变量值的方法来提快速度,可是。这仅仅能对myisam表使用。5) 当从一个文本文件装载一个表时,使用LOAD DATA INFILE。这通常比使用非常多INSERT语句快20倍。6) 依据应用情况使用repla
- 循环插入表,多字段能很慢
- mysql中循环截取用户信息并插入到目标表对应的字段中
- OCI方面的知识,哪位高手能帮忙修改下 想批量插入数据,且表的字段很多
- Mysql insert语句的优化 1) 假设你同一时候从同一客户插入非常多行。使用多个值表的INSERT语句。这比使用分开INSERT语句快(在一些情况中几倍)。 Insert into test values(1,2),(1,3),(1,4)…2) 假设你从不同客户插入非常多行,能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含义是让insert 语句立即运行。事实上数据都被放在内存的队列中,并没有真正写入磁盘;这比每条语句分别插入要快的多。LOW_PRIORITY刚好相反,在全部其它用户对表的读写完后才进行插入。3) 将索引文件和数据文件分在不同的磁盘上存放(利用建表中的选项)。4) 假设进行批量插入。能够添加bulk_insert_buffer_size变量值的方法来提快速度,可是,这仅仅能对myisam表使用。5) 当从一个文本文件装载一个表时。使用LOAD DATA INFILE。这通常比使用非常多INSERT语句快20倍。6) 依据应用情况使用repl
- mysql中循环截取用户信息并插入到目标表对应的字段中
- Django--BBS项目 需求模仿抽屉()和虎嗅()做一个网站bbs知识点Django知识:models表字段第一个属性可以用 u"别名" 标明字段名称,效果同 verbose_name='别名';使用Django自带的用户认证表 from django.contrib.auth.models import User ,里面包含了username和password等,它是一对一的关系,即每个账户对应了自己的一个关联表;评论只是多一个parent字段,外键是"self",然后用递归函数取出;models.create()方法只返回true or false ,save()方法能返回具体;migrate只创建auth和Django表,不会创建自己的表;自关联ForeignKey("self")的时候,要加参数 related_name,而且名字不能和外键字段名称相同;因为反向查询的时候,Comment.parent_comment和Comment.comment会冲突。blank=True,是Dj
- 给大家伙儿分享点资料以及学习java的思路
- 求大神来教育,怎么月薪才能上12K,北京(满意,分全给)