MySQL數(shù)據(jù)庫刪除數(shù)據(jù)自增ID不連續(xù)的實(shí)現(xiàn)示例
MySQL數(shù)據(jù)庫刪除數(shù)據(jù)后,再新增數(shù)據(jù)就會(huì)導(dǎo)致自增ID不連續(xù)
解決方法
1. 刪除一行數(shù)據(jù)后,其后數(shù)據(jù)自增ID值減一(mapper.xml)
update 表名 set id = id - 1 where id > #{deleteId}2. 更新下一個(gè)自增ID值
當(dāng)設(shè)置值小于 max(id) 時(shí),會(huì)自動(dòng)設(shè)置為 max(id)+1 ,故一般設(shè)置為1就好
alter table 表名 auto_increment = 1
性能優(yōu)化
上述方法每次刪除數(shù)據(jù)都要執(zhí)行,可通過MySql的定時(shí)任務(wù)實(shí)現(xiàn)性能優(yōu)化——每天零點(diǎn)進(jìn)行自增ID重置
1. 定義重置自增ID的存儲(chǔ)過程
create procedure p_reset_id()
begin
set @i = 0;
update 表名 set id = (@i := @i + 1);
alter table 表名 auto_increment = 1;
end2. 開啟事件調(diào)度器
show variables like 'event_scheduler'; set global event_scheduler = on;
3. 定義事件/定時(shí)任務(wù)
create event e_reset_id on schedule every 1 day starts '2024-10-12 00:00:00' do call p_reset_id();
到此這篇關(guān)于MySQL數(shù)據(jù)庫刪除數(shù)據(jù)自增ID不連續(xù)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MySQL 刪除數(shù)據(jù)自增ID不連續(xù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 5.5/5.6/5.7及以上版本安裝包安裝時(shí)如何選擇安裝路徑
最近mysql官方網(wǎng)站的安裝包從5.5-5.7起都是新版的安裝界面,各種環(huán)境要求支持,看樣子以后老點(diǎn)的系統(tǒng)安裝都夠費(fèi)勁的了,這里腳本之家小編特為大家整理一下安裝步驟與方法2016-04-04
MySQL數(shù)據(jù)庫列的增刪改實(shí)現(xiàn)方法
這篇文章主要介紹了MySQL數(shù)據(jù)庫列的增刪改實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了mysql數(shù)據(jù)庫針對列的增加、修改、刪除等相關(guān)操作sql命令及使用技巧,需要的朋友可以參考下2019-03-03
揭秘SQL優(yōu)化技巧 改善數(shù)據(jù)庫性能
這篇文章是以 MySQL 為背景,很多內(nèi)容同時(shí)適用于其他關(guān)系型數(shù)據(jù)庫,需要有一些索引知識為基礎(chǔ),重點(diǎn)講述如何優(yōu)化SQL,來提高數(shù)據(jù)庫的性能2012-01-01
MySQL存儲(chǔ)過程的創(chuàng)建、調(diào)用與管理詳解
這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程的創(chuàng)建、調(diào)用與管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

