Ci sono già state molte buone risposte a questo che praticamente si riducono a "Dipende dalle circostanze", e non posso aggiungere nulla a queste.
Una cosa che non è stata menzionata, tuttavia, che penso debba essere menzionata, è che non dovresti mai riutilizzare le chiavi primarie che sono state generate da una sequenza o da un sistema AUTO_INCREMENT.
Quando si elimina un elemento a cui era stata assegnata una chiave primaria da un tale sistema, ci saranno degli spazi vuoti nella colonna chiave primaria, lasciati dai dati eliminati. C'è una grande tentazione di riassegnare questi spazi vuoti a nuovi elementi man mano che vengono aggiunti, o peggio ancora, di mescolare i dati esistenti per dargli un nuovo ID per rimuovere gli spazi vuoti, ma facendo così sorgeranno problemi che potresti non dovrai mai fare i conti se hai lasciato le chiavi da sole.
Supponi di conservare un database di stampanti per la gestione dei materiali di consumo riordinati. La stampante 13, una vecchia stampante laser, si rompe al di là della riparazione economica in modo da buttarla fuori. Nel frattempo, per un motivo non correlato, qualcuno ordina una nuova stampante termica per eseguire la stampa di codici a barre nel magazzino e quella stampante arriva prima della sostituzione per la stampante 13. L'amministratore registra quella nuova stampante nel database e, poiché 13 è ora gratuito e stai riciclando gli ID, la nuova stampante termica riceve 13 come ID.
Ora qualcuno ti dice che la stampante 13 ha quasi esaurito l'inchiostro. Ricordi che la stampante 13 è una stampante laser, quindi non ti preoccupi di cercarla nel database e fai un ordine per una cartuccia di toner. Solo in realtà era necessario ordinare un pacchetto di inchiostri termici perché la stampante 13 non è più una stampante laser. Quando arriva la cartuccia del toner, non è possibile utilizzarla perché è una ricarica di inchiostro errata per la stampante, non è possibile stampare altri codici a barre e non è possibile spedire ordini in attesa di essere spediti.
Ancora peggio, cosa succede se si elimina la stampante 13 e si mescolano tutte le stampanti che la seguono per riempire il vuoto? La stampante 14 (qualche vecchia matrice di punti decrepita) diventa la stampante 13, la stampante 15 diventa la stampante 14 e così via.
Tutte le stampanti hanno etichette su di loro in modo che possano essere incrociate con il database, ma ora tutte le etichette non sono aggiornate. Dovrai andare in giro, individuare tutte le stampanti del settore (che potrebbero incorrere in centinaia!) E rietichettarle. Non è certo un uso efficace del tempo. Ed è anche un processo soggetto a errori, e cosa succede se non viene mai eseguito? Qualcuno chiama per dire che la stampante 14 si è guastata e deve essere riparata urgentemente, quindi la guardi e scopri che la stampante 14 è una stampante a getto d'inchiostro in ricezione. Solo perché hai mescolato gli ID in giro, in realtà è la stampante a matrice di punti che deve essere riparata urgentemente. Il tizio che ha chiamato il problema viene lasciato in sospeso, mentre l'addetto alla reception ha un addetto all'assistenza tecnica che non ha mai chiesto di alzare per riparare una stampante che non era rotta.
Dovresti considerare gli ID assegnati da un sistema di auto-incremento come permanenti, sono immutabili e non possono essere riutilizzati, anche se la cosa a cui si riferisce l'ID cessa di esistere. Alcune persone sostengono che non vogliono preoccuparsi degli ID in esaurimento, ma anche con sistemi a 32 bit e ID firmati, ci sono ancora 2 miliardi di ID disponibili. Se riesci a rendere non firmata la colonna ID, questo raddoppia a 4 miliardi e su sistemi a 64 bit il numero di ID disponibili è letteralmente maggiore del numero di stelle nel cielo. Non finirai gli ID.