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

Zabránit automatickému přírůstku na duplicitním vložení MySQL

Svůj INSERT můžete upravit tak, aby vypadal takto:

INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1

Kde $tag je značka (samozřejmě správně citovaná nebo jako zástupný symbol), kterou chcete přidat, pokud tam ještě není. Tento přístup ani nespustí INSERT (a následné plýtvání automatickým přírůstkem), pokud tam značka již je. Pravděpodobně byste mohli přijít s hezčím SQL, ale výše uvedené by mělo stačit.

Pokud je vaše tabulka správně indexována, pak extra SELECT pro kontrolu existence bude rychlý a databáze bude muset tuto kontrolu tak jako tak provést.

Tento přístup však nebude fungovat pro první značku. Do tabulky značek můžete přidat značku, o které si myslíte, že bude vždy použita, nebo můžete provést samostatnou kontrolu prázdné tabulky.



  1. Maximální počet znaků ve štítcích (názvy tabulek, sloupce atd.)

  2. 60 milionů záznamů, vyberte záznamy z určitého měsíce. Jak optimalizovat databázi?

  3. PostgreSQL Connection Pooling:Část 4 – PgBouncer vs. Pgpool-II

  4. Techniky optimalizace dotazů v SQL Server:5 osvědčených postupů pro zvýšení výkonu dotazů