`

mysql删除记录后id顺序不连续的解决方法

阅读更多
方法1、删除自增字段,然后重建(缺点就是必须记住自增字段的其它属性,不然可能会导致一些未知问题)

复制代码
1.ALTER TABLE `tablename` DROP COLUMN `id`;
2.ALTER TABLE `tablename` ADD `id` int(10) unsigned NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (`id`), AUTO_INCREMENT = 0 ROW_FORMAT = COMPACT;


方法2、通过sql语句按顺序重置自增字段值,实现方法:

复制代码
1.SET @i=0;
2.UPDATE `tablename` SET `id`=(@i:=@i+1);
3.ALTER TABLE `tablename` AUTO_INCREMENT=0;
分享到:
评论

相关推荐

    PHP中ID设置自增后不连续的原因分析及解决办法

    例如,先删除记录再插入新记录,如果这两条SQL语句没有分开执行,可能导致新插入的记录ID跳过了被删除的ID。 解决办法: 1. 使用`TRUNCATE TABLE`而非`DELETE FROM`: `TRUNCATE TABLE`命令会清空表内容,并重置...

    mysql分库分表分区1

    这种方法适用于需要平均分配数据且不关心具体值顺序的场景。 4. **KEY分区**: KEY 分区是 HASH 分区的一种特殊形式,它使用 MySQL 内部的哈希函数对一列或多列进行计算。与 HASH 分区不同,KEY 分区只能用整数值...

    MySQL 查询文章的上下篇

    为了避免这种情况,可以考虑使用其他方式,如时间戳排序或者自定义顺序字段来实现文章的顺序关系,这样在查询时根据排序规则找到相邻文章,而无需在每个文章记录中存储上下篇的ID。 总结来说,实现MySQL查询文章的...

    自增主键为什么不是连续的?.pdf

    例如,当记录被删除后,其对应的自增ID不会被重新使用,这就会导致自增主键不连续。此外,数据库重启、并发插入或特定系统参数的设置也可能影响自增值的生成。 在MySQL中,自增值的保存策略因引擎而异。对于MyISAM...

    2021春招MySQL高频面试题.pdf

    - **级联操作**:执行一系列相关操作,如删除主表数据时自动删除子表相关记录。 #### 4. 什么是存储过程?用什么来调用? 存储过程是一组预先编写的SQL语句和控制流语句,保存在数据库中,通过存储过程名称进行...

    MySQL DBA高频面试题

    - 删除了最后两条数据后,重启MySQL,插入一条数据后id值会接着上次的最大值。 6. 各类连接区别: - 内连接(INNER JOIN)返回两个表中匹配的行。 - 左连接(LEFT JOIN)返回左表所有行,即使右表没有匹配。 - ...

    mysql数据库配置模板

    - **server_id**: 复制环境中唯一标识MySQL实例的ID。 - **log_bin**/**sync_binlog**: 开启二进制日志记录,并指定同步策略。 - **binlog_cache_size**/**max_binlog_cache_size**: 二进制日志缓存的大小及其最大值...

    13 为什么表数据删掉一半,表文件大小不变?.pdf

    当一个记录被删除,该位置会被标记为“可复用”,但空间并未回收。这导致即使数据被删除,磁盘上的文件大小也不会减少,这就是为什么删除数据后,表文件大小不变的原因。这个“可复用”但未被使用的空间形成了所谓的...

    2009达内SQL学习笔记

    多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] ...

    MySQL分区表的最佳实践指南

    MySQL分区表是一种优化大型数据库性能的技术,它将大表逻辑上划分为更小、更易管理的部分,以提高查询速度和数据管理效率。本文将深入探讨MySQL分区表的最佳实践,包括分区的目的、类型、操作示例以及适用场景。 1....

    mysql非主键自增长用法实例分析

    3. 自增长列的递增值不会因为删除记录而回退,除非显式地重置该列的值。 4. 自增长列可以是任何整数类型,如 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT。 5. 在多用户环境中,自增长列的递增可能不是连续的,因为...

    适合村状表结构的模式--《嵌套集合模型》

    传统的关系型数据库表并不直观地支持层级关系,这使得管理此类数据变得复杂。本文将探讨嵌套集合模型,这是一种新颖而高效的方法,用于在关系型数据库中表示和操作分层数据。 #### 什么是嵌套集合模型? 嵌套集合...

    可以方便设置sql自动编号

    6. **重置自动编号**:有时可能需要重置自动编号,例如在删除所有记录后。在MySQL中,可以执行以下操作: ```sql ALTER TABLE my_table AUTO_INCREMENT = 1; ``` 在SQL Server中,使用`DBCC CHECKIDENT`: `...

    详解MySQL分区表

    - HASH分区:基于用户定义的表达式结果(通常是列的哈希值)进行分区,可以均匀分布数据,但不保证顺序。 - KEY分区:与HASH分区类似,但使用MySQL内部的哈希函数,仅支持整数值列。 3. 分区操作示例: - 创建...

    pt-osc在线重建表导致死锁的分析及对应的优化方案1

    - 如果可能,可以暂时禁用自增ID锁,等DDL操作完成后恢复。 6. **小结**: 在使用pt-osc进行在线DDL时,了解其工作原理并合理规划操作时机是避免死锁的关键。通过对死锁日志的分析,我们可以找出死锁的根本原因,...

    【总结】数据库自增字段的 3 种实现方式

    然而,与其它数据库系统不同,SQLite的`AUTOINCREMENT`会在每次插入时检查是否存在已删除的记录,如果存在则重用其ID,这可能导致不连续的序列。创建表的例子如下: ```sql CREATE TABLE users ( user_id INTEGER...

    系统设计资料

    - **按时间粗略有序**:虽然不能精确有序,但希望ID大致能反映出生成的时间顺序,以提高检索效率。 - **尽可能短**:在保证唯一性和有序性的前提下,ID应当尽可能短小,以节约存储空间和提升索引效率。 **实现方法*...

    分布式锁原理介绍.pptx

    3. **全局自增主键**:在分布式数据库系统中,为每条记录分配唯一ID时,需要使用分布式锁来避免ID冲突。 #### 四、分布式锁的实现 ##### 1. 基于数据库实现分布式锁 - **利用MySQL唯一索引特性**:通过在表中创建...

    2021-2022计算机二级等级考试试题及答案No.13247.docx

    - **错误理解:** 二维表中行的顺序、列的顺序不可以任意交换。 - **正确理解:** - 每一列具有唯一的字段名。 - 表中不允许出现完全相同的两行。 - 行的顺序、列的顺序可以任意交换,不影响数据的表示。 - **应用...

    企业oracle数据分析岗位面试题

    - TRUNCATE操作后会重置自增ID,而DELETE不会。 - TRUNCATE不能对视图或其他表进行操作。 - TRUNCATE操作更快且占用资源少,适用于大规模数据清理场景。 #### 九、Oracle数据库优化方法 - **知识点解析**: - ...

Global site tag (gtag.js) - Google Analytics