Potresti modificare il tuo INSERT in modo che sia qualcosa del genere:
INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
SELECT tag
FROM tablename
WHERE tag = $tag
)
LIMIT 1
Dove $tag
è il tag (correttamente citato o ovviamente come segnaposto) che vuoi aggiungere se non è già presente. Questo approccio non attiverà nemmeno un INSERT (e il successivo spreco di incremento automatico) se il tag è già presente. Probabilmente potresti trovare un SQL migliore di quello, ma quanto sopra dovrebbe fare il trucco.
Se la tua tabella è indicizzata correttamente, il SELECT aggiuntivo per il controllo di esistenza sarà veloce e il database dovrà comunque eseguire quel controllo.
Tuttavia, questo approccio non funzionerà per il primo tag. Potresti inserire nella tua tabella dei tag un tag che pensi finirà per essere utilizzato o potresti fare un controllo separato per una tabella vuota.