Ho visto già un post simile su Stack Overflow, ma non ero abbastanza soddisfatto.MySQL - utilizzo di String come chiave primaria
Diciamo che offro un servizio Web. http://foo.com/SERVICEID
SERVICEID è un ID stringa univoco utilizzato per fare riferimento al servizio (base 64, numeri minuscoli/maiuscoli + numeri), simile al modo in cui i servizi di abbreviazione URL generano ID per un URL.
Capisco che ci siano problemi di prestazioni inerenti al confronto tra stringhe e interi.
Ma sono curioso di come ottimizzare al massimo una chiave primaria di tipo String.
Sto utilizzando MySQL, (attualmente utilizzando il motore MyISAM, anche se ovviamente non capisco tutte le differenze del motore).
Grazie.
aggiornamento per il mio scopo la stringa era in realtà solo un intero base62 codificato, quindi la chiave primaria è un numero intero, e dal momento che non è probabile che superi mai la dimensione di bigint semplicemente non ha molto senso per usa qualcos'altro (per il mio particolare caso d'uso)
Grazie, ero abbastanza sicuro che non sarei un'enorme differenza, ma volevo sentire dalla comunità che ha "stato fatto lì" –
Nota: per le colonne che sono un codice solo ASCII limitato piuttosto che parole reali (ad es. hash, base64, codici paese standard, ecc.), può essere una buona idea usare la collazione 'ascii_bin'. Se si utilizza una regola di confronto basata su utf-8, verrà riservato 3 o 4 byte per carattere per le colonne CHAR anziché solo 1. – thomasrutter
Non utilizzare i codici paese nelle chiavi primarie. – displayname