te la butto li
cercare una stringa, per mysql, comporta parecchio lavoro tra conversioni di codifiche, confronto di carattere per carattere con l'aggiunta che il casing va tenuto in considerazione
i confronti di tipo numerico, invece, sono molto più performanti perché fisicamente il linguaggio macchina li supporta direttamente ... verificare se due stringhe sono uguali e come verificare se una sequenza di numeri sono uguali
ovviamente entrano in ballo una marea di ottimizzazioni che mysql ha applicato quindi devi fare dei test!
puoi provare ad utilizzare un campo affiancato al nickname chiamato magari nickname_hash nel quale vai a inserire il CRC32 del nickname ... ovviamente questo campo deve essere una chiave unica pure lei mentre il tipo deve essere INT 10 NOT NULL di tipo signed (ovvero con numeri negativi e positivi ... ergo senza unsigner) ... ai fini dell'identificazione è indifferente e si evita ulteriore lavoro
Prima che lo tiri in ballo qualche altro ... il CRC32 restituisce valori numerici a 4 byte, ovvero a 32bit, ovvero 4 miliardi e qualcosa di valori ... quindi ci sono più "probabilità" che spuntino dei doppioni rispetto a un MD5 ... però ... anche se è più probabile è comunque NOTEVOLMENTE difficile che accada.
Al limite, dato che in questo specifico caso si tratta di un nickname e quindi di un dato che l'utente può variare, richiedi l'inserimento di un altro nickname
ripeto però ... che comunque c'è la remota possibilità di doppioni ... comunque il mio consiglio è quello prima di provare a verificare se le performance effettivamente aumentano e magari si aggiunge qualche altro valore per identificare il nickname in maniera univoca ... perché utilizzando l'hash come chiave unica usata per la ricerca prima di verificare gli altri valori estrae le chiavi corrispondenti ... quindi il rischio è di dover eseguire il confronto del nickname invece che su una riga ... su due o tre ... o 4 e cosi via
comunque, fai prima la prova![]()


Rispondi quotando