最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL INSERT INTO SELECT時自增Id不連續(xù)問題及解決

 更新時間:2023年12月08日 16:10:19   作者:shyの同學(xué)  
這篇文章主要介紹了INSERT INTO SELECT時自增Id不連續(xù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.問題

最近筆者接到一個新的開發(fā)需求:

將多張相同字段的MySQL數(shù)據(jù)表合并為一張,一聽我就樂了,這不就是幾行INSERT INTO SELECT FROM…的事兒嘛。

在痛快的執(zhí)行完準備交付的時候,發(fā)現(xiàn)了一個問題:

\qquad 合并好的數(shù)據(jù)表中的id居然不是連續(xù)自增的,也就是說合并的幾張數(shù)據(jù)表中每兩張表的Id中間沒有續(xù)上。

合并前的數(shù)據(jù)是長這樣的

合并好之后的數(shù)據(jù)是長這樣的

可以發(fā)現(xiàn)4下來就是8了,11下來是15

2.分析

通過仔細的研究之后發(fā)現(xiàn),對于批量插入數(shù)據(jù)語句,MySQL提供了批量申請自增id的策略:

  • 語句執(zhí)行過程中,第一次申請自增id,會分配1個(2的0次方)
  • 1個用完以后,這個語句第二次申請自增id,會分配2個(2的1次方)
  • 2個用完以后,還是這個語句,第三次申請自增id,會分配4個(2的2次方)

也就是說當(dāng)我執(zhí)行下面這條語句時(user01一共四條數(shù)據(jù))

INSERT INTO user (name, age) SELECT name, age from user01;
  • 第一次申請自增id會分配1個,1 < 4
  • 第二次申請自增id會分配2個,1+2 < 4
  • 第三次申請自增id會分配4個,1+2+4 > 4,終止

此時1 + 2 + 4 = 7 > 4,申請自增id的操作就會停止。

因為已經(jīng)申請了7個id了,所以當(dāng)我們執(zhí)行第二條SQL語句時,插入數(shù)據(jù)的id就會從8開始,此時AUTO_INCREMENT的值也會是8

3.解決方案

筆者采用的操作是在Navicat中修改自動遞增的值來保證它的id連續(xù):

直接將自動遞增的值刪除,然后保存

當(dāng)然,這個理論上是不能解決根本問題的。

4.結(jié)論

這么設(shè)計的主要原因是為了提升性能,所以自增id只保證是遞增的,但不保證是連續(xù)的!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL?DQL從入門到精通

    MySQL?DQL從入門到精通

    通過DQL,我們可以從數(shù)據(jù)庫中檢索出所需的數(shù)據(jù),進行各種復(fù)雜的數(shù)據(jù)分析和處理,本文將深入探討MySQL DQL的各個方面,幫助你全面掌握這一重要技能,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • 淺談MySQL聚簇索引

    淺談MySQL聚簇索引

    數(shù)據(jù)庫的索引從不同的角度可以劃分成不同的類型,聚簇索引便是其中一種。聚簇索引并不是一種單獨的索引類型,而是一種數(shù)據(jù)的存儲方式。本文詳細介紹了MySQL的聚簇索引,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • phpmyadmin報錯:#2003 無法登錄 MySQL服務(wù)器的解決方法

    phpmyadmin報錯:#2003 無法登錄 MySQL服務(wù)器的解決方法

    通過phpmyadmin連接mysql數(shù)據(jù)庫時提示:“2003 無法登錄 MySQL服務(wù)器”。。。很明顯這是沒有啟動mysql服務(wù),右擊我的電腦-管理-找到服務(wù),找到mysql啟動一下
    2012-04-04
  • 詳解mysql8.018在linux上安裝與配置過程

    詳解mysql8.018在linux上安裝與配置過程

    這篇文章主要介紹了mysql8.018在linux上安裝與配置過程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • MySQL的聯(lián)表查詢實現(xiàn)

    MySQL的聯(lián)表查詢實現(xiàn)

    數(shù)據(jù)通常分布在多個表中,為了獲取全面的信息,需要進行聯(lián)表查詢,本文主要介紹了MySQL的聯(lián)表查詢實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 詳解一條sql語句在mysql中是如何執(zhí)行的

    詳解一條sql語句在mysql中是如何執(zhí)行的

    這篇文章主要介紹了一條sql語句在mysql中是如何執(zhí)行的,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL 查看事務(wù)和鎖情況的常用語句分享

    MySQL 查看事務(wù)和鎖情況的常用語句分享

    這篇文章主要介紹了MySQL 查看事務(wù)和鎖情況的常用語句分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • mysql 5.7.27 安裝配置方法圖文教程

    mysql 5.7.27 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.27 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • win10 下安裝 mysql 5.7.14 詳細圖文教程

    win10 下安裝 mysql 5.7.14 詳細圖文教程

    本文通過文字和圖片相結(jié)合的形式給大家介紹了win10 下安裝 mysql 5.7.14的教程的,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • MySQL實現(xiàn)索引下推的示例代碼

    MySQL實現(xiàn)索引下推的示例代碼

    索引下推是一種數(shù)據(jù)庫查詢優(yōu)化技術(shù),通過在索引掃描階段應(yīng)用過濾條件,減少回表操作,本文主要介紹了MySQL實現(xiàn)索引下推的示例代碼,感興趣的可以了解一下
    2025-02-02

最新評論

建宁县| 吴堡县| 三江| 济宁市| 陵水| 巴南区| 洱源县| 西和县| 汾阳市| 陈巴尔虎旗| 海城市| 龙井市| 百色市| 阿城市| 平潭县| 察雅县| 汉沽区| 宜阳县| 嘉荫县| 迁安市| 太仆寺旗| 花垣县| 新绛县| 嘉禾县| 微山县| 淮阳县| 康乐县| 黄龙县| 科技| 商都县| 遵义市| 葵青区| 平山县| 镇安县| 莆田市| 黑龙江省| 泾川县| 新闻| 昌邑市| 全椒县| 顺义区|