sql >> Databáze >  >> RDS >> Mysql

Jak zajistit, aby v číslech auto_increment nebyly žádné mezery?

Za prvé, je to úplně v pohodě mít tyto mezery. Není žádný problém . Je to jen vaše OCD, která vás nutí myslet si, že tato čísla musí následovat určitý vzorec – NESMÍ.

  • auto_increment není funkce PHP, je to funkce MySQL
  • auto_increment zajišťuje, že každý řádek získá jedinečný číslo. Nezabývá se sekvenčními čísly
  • auto_increment funguje bezpečně v souběžném prostředí - to znamená, že se k MySQL připojuje mnoho uživatelů a dělají věci a všichni musí být schopni pracovat s databází a nezískat stejné ID pro identifikaci řádku. To se provádí poměrně složitým procesem a to je jeden z důvodů, proč auto_increment výnosové mezery
  • auto_increment je používán InnoDB pro fyzickou organizaci záznamů na disku - využívá funkci auto_increment a ten produkuje číslo, které je větší než předchozí (to je to, co dělá, větší než předchozí, ne sekvenční). Pomocí toho je zkonstruován b-strom a záznamy jsou postupně zapisovány na pevný disk. Manipulace s auto_increment vytváří InnoDB znovu vyvážit strom. Znamená to, že prochází záznamy a znovu vytváří index, pokud si s tím něco uděláte – to je něco, co nechcete. někdy

Když se nad tím zamyslíte, co vůbec získáte s pořadovými čísly? Vlastně nic, kromě toho, že vás mozek pravděpodobně bolí méně, protože existuje nějaký imaginární řád.

Pro sekvenční čísla použijte k jejich vytvoření spouštěče. auto_increment má jednu zakázku a pouze jednu zakázku – vyrábět jedinečné čísla.



  1. MySQL vybere nejlepších X záznamů pro každého jednotlivce v tabulce

  2. Neanglické znaky v databázi pomocí Javy

  3. Spouštěče kódu Django nebo MySQL

  4. Jak mohu spojit výsledky dvou dotazů s objednávkou?