百万数据修改索引,百万数据修改主键

原文:百万数据修改索引,百万数据修改主键

当百万数据时,如果修改主键,那么会自动重建索引,所以操作会非常慢,经常会超时,错误提示类似:

超时时间已到。在操作完成之前超时时间已过或服务器未响应

解决方案:不要采用手动添加主键或者索引,而采用sql语句修改主键或者索引,当然很多人这个sql不会写,也不要紧,sql自带了,两步走,第一:点开表设计,添加一个索引或者主键,如图

第二:关闭后,右键,有一个生成更改脚本,如图:

点击生成,复制里面的脚本,关闭当前页面,记住,不要保存哦。。。。然后运行这个sql即可。

如果还有超时的错误,那么将数据库的超时时间设置一下即可:点击服务器设置---属性---连接,设置即可

时间: 2024-12-24 10:33:00

百万数据修改索引,百万数据修改主键的相关文章

mysql旧表去重数据导入新表且赋予主键id新值

业务需求: A表有id,n1,n2,n3字段,为新建空表, B表有id,n1,n2,n3,n4,n5等字段,为含有数据的旧表, 现将B表中的n1,n2,n3组合的记录去重后导入A表中,并且A表主键也要录入值 方案:将B表的记录查询后去重,同时对查记录结果编排序号,将序号作为待插入A表的id值,sql语句如下: INSERT INTO A表(id,n1,n2,n3) select @row :[email protected]row+1 AS id,t1.* from ( SELECT DISTI

mybatis在查询一条数据的时候返回它的主键

场景: 我们在用 insert 语句插入一天语句的时候,希望得到这条数据的主键ID(在主键是自增的情况下),如何来实现了. 以上是要给insert语句, 可以看到新加了一个 <selectKey> 标签,这就是mybatis 实现的方法

通过mybatis添加数据记录时,如何返回主键

java private SqlSession session = null; @BeforeClass public void init() throws IOException { // SqlSession--->SqlSessionFatory----->SqlSessionFatoryBuilder SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder(); InputStream ins = Resources.ge

mybatis插入数据后返回自增的主键id

在插入数据时候想自动返回mysql的自增的主键,需要在mapper.xml中配置下: <insert id="insert" parameterType="com.rograndec.wdzs.admin.data.wdzs.entity.ProductCategoryEntity" useGeneratedKeys="true" keyProperty="id" > insert into product_cat

修改Oracle数据库表的主键对应列的数据类型

我们产品从SPC100升级到SPC200的时候,由于数据库表列的数据类型发生了改变,需要写SQL脚本,完成数据库的升级.需要将表T_MOBILE_INDVCONFIG的主键列id从varchar2(100),改成number(17).可以参考如下SQL: --将原来的ID列重命名为bak_id ALTER TABLE T_MOBILE_INDVCONFIG RENAME COLUMN id TO bak_ID; --添加一个与原来的列一样名字的列 ALTER TABLE T_MOBILE_IND

SolrJ的添加或修改索引库数据

Document形式 这种方式已经比lucene的实现方式更加简单,但是依然存在可优化的空间,比如:本地数据库中的数据查询出以后被包装成javaBean,如果采用此方式,必须把javaBean拆解到documen对象中.那么solr有没有可解决的方案呢?答案是肯定的,solrServer除了提供add方法外,还提供了addBean方法.注解和JavaBean形式1)创建JavaBean2)直接通过SolrServer添加JavaBean3)执行测试这是因为javaBean没有使用注解标注那些属性

数据表主键

1.主键分为:逻辑主键和业务主键 逻辑主键:没有任何的含义,只是为了标识当前列在当前数据库表里的唯一标识: 业务主键:业务主键就是具有真实意义的,就比如身份证,银行卡号,员工编号,一旦变化,难以维护. 推荐使用逻辑主键.另外标识列只能是int类型的 主键列:就是不能插入重复数据(默认带索引),每一张数据表,都推荐有主键,设置标识. 主键标识列:就算数据行被删除了,增长的数字也是按照原来的增长.比如,一张表里面有两行数据,删除编号为1,2的行数据据,之后,再插入新数据行,编号不会从1开始,而是从3

SQL 数据优化索引建suo避免全表扫描

首先什么是全表扫描和索引扫描?全表扫描所有数据过一遍才能显示数据结果,索引扫描就是索引,只需要扫描一部分数据就可以得到结果.如果数据没建立索引. 无索引的情况下搜索数据的速度和占用内存就会比用索引的检索慢和高.下面是一个例子 1:无索引的情况 Product表,里面没有任何索引,如下图: 从上图中,我悲剧的看到了,物理读是9次,也就说明走了9次硬盘,你也可以想到,走硬盘的目的是为了拿数据,逻辑读有1636次,要注意的是这里 的”次“是“页”的意思,也就是在内存中走了1636个数据页,我用dbcc

jango 模型管理数据model,数据库外键主键与一对一,一对多,多对多关系

四.models.py 定义和管理模型: 4.1模型class的属性就映射与数据库的字段参数 继承models.Model class TestClass(models.Model): 4.2在数据库生成数据表: #django默认在makemigrations会为表对象创建主键id,id = models.AutoField(primary_key=True) 你也可以自定义一个主键对象: 4.2.1: 生成迁移文件python manage.py makemigrations 4.2.2执行

数据表中的主键

----还在加班中 再过3个小时就清明节了.我的这块任务以完成咱们聊聊主键 主键 在表的设计中一般都会有一个主键.主键的作用是为了有效的管理表中的数据,主键的存在做为唯一的标识列,主键的存在将表中的每一行数据区分开来,方便有效的检索,更新,删除, 如果没有主键我们执行这些功能时效率将会缓慢. 主键作为标识符,在表中是不具有描述性的(描述性:指有特定的含义 比如 ProjectName:项目名称),主键一般来说是数值类型,并且不用具有描述性而且唯一的字段(比如:社保卡号,手机号码等...) 我们从