sql >> Database >  >> RDS >> Mysql

MySQL atomic insert-if-exists met stabiele auto-increment

De vraag gaat eigenlijk over hoe u gegevens kunt normaliseren als u verwacht dat er duplicaten zijn. En vermijd dan het "verbranden" van ID's.

http://mysql.rjweb.org/doc.php/staging_table#normalization bespreekt een proces in twee stappen en is gericht op massale updates vanwege de snelle opname van rijen. Het degenereert tot een enkele rij, maar vereist nog steeds de 2 stappen.

Stap 1 INSERTs elke nieuwe rijen, nieuwe auto_inc-ID's maken.

Stap 2 trekt de ID's massaal terug.

Merk op dat het werk het beste kan worden gedaan met autocommit=ON en buiten de hoofdtransactie die de gegevens laadt. Dit vermijdt een extra reden voor het verbranden van ID's, namelijk mogelijke rollbacks.




  1. Prestaties van LIKE-query's op miljoenen rijtabellen, MySQL

  2. PHP - MySQL-query met Paginering

  3. Automatische gegevensverzameling van wijzigingen in het databaseschema in MS SQL Server

  4. MySQL Server is verdwenen bij het importeren van een groot sql-bestand