beh, ma una volta che tu utilizzi l'indirizzo e-mail come chiave per distinguere gli utenti non solo può essere utile mettere quel campo come chiave unica, ma è, secondo me, necessario: altrimenti rischi che, per qualche motivo, ti ritrovi 2 indirizzi e-mail uguale .... e succede un bel crack
alla fin fine se per l'uso che ne fai tu e per lo scopo del software va bene che ci sia una sola e-mail o comunque ci sia una sola email usata da un utente va bene impostarla come chiave unica, nel primo caso, o come chiave non unica, nel secondo.
tanto considera anche una cosa: se il cms invece di eliminare l'utente lo flagga come eliminato (cosa che di solito io faccio), quanti utenti con lo stesso indirizzo e-mail potrai avere? 2? 3? e quindi le altre condizioni della query saranno applicate su 2/3 righe di conseguenza il tempo di esecuzione relativamente alle altre condizioni è praticamente pari a zero (non mi ricordo come si chiama questa situazione in gergo tecnico di progettazione dei DB in questo momento, sono stanco)
secondo me puoi impostare, ed usare, la e-mail come chiave, anche unica se le funzionalità te lo permettono
inoltre, ulteriore domanda, questa procedura quante volte sarà eseguita? e se sarà eseguita molte volte, su quanti record, complessivamente, dovrà essere eseguita? se le risposte a queste due domande non sono:
- a rotazione senza tregua
- milioni di records
direi che puoi impostare il campo email come chiave normale e usare la e-mail per operare sui record
(PS: soluzioni alternative come gestire il CRC32 del campo e ricercare quello invece che direttamente il campo stesso e simili sono anche utilizzabili, ma MySQL già implementa le dovute ottimizzazioni per le ricerche tramite stringhe quindi secondo me puoi andare tranquillissimo)


Rispondi quotando