Je souhaite à l'avenir ma demande. Quel est le meilleur type d'identifiant à utiliser?
J'envisage:
Je ne développe pas de système distribué, il est donc nécessaire d'utiliser un UUID?
Aussi, quelle est la qualité INTEGER
joints vs VARCHAR
joints?
Enfin, stocke le nom d'utilisateur (unique) et les données de message dans la même table MySQL mieux que de stocker l'ID utilisateur?
Utiliser des entiers. C'est la manière la plus simple et la plus efficace (surtout pour InnoDB).
C'est-à-dire
Les raisons?
Autres observations:
Les UUIDS/GUID sont souhaitant lorsque vous souhaitez des ordinateurs multiples, indépendants, créant des identifiants uniques globalement.
Mais le sucer comme une clé primaire.
Ils sont gros - 36 caractères, pire si vous par défaut à UTF8, qui est surkill. L'hexagone en eux peut être converti en binaire (16). En InnoDB, la PK est annexée à chaque clé secondaire, multipliant ainsi le coût de l'espace d'un PK volumineux.
Ils sont aléatoires - une fois que vous avez plus de données que vous pouvez mettre en cache, vous frappez généralement le disque pour chaque extraction. Cela dépose votre performance à ~ 100 opérations/s. Juste lorsque vous avez besoin d'évolutivité, il est enlevé de vous!
Si tous les écrit sont effectués à un seul maître, utilisez Auto_inCrementation: Midixint non signé jusqu'à 16 m, Int non signé jusqu'à 4G, ou Bietsint pour l'optimiste incroyablement optimiste.
Quant aux performances de la CPU de Varchar, Binary, Int, etc. - ce n'est pas la question. La question est la principale victoire de la clé, car cela conduit à la cache-câbilité de l'indice, qui conduit à des E/S étant le goulot d'étranglement. Si tout peut être mis en cache, ne vous inquiétez pas du type et de la taille de la clé. (OK, les types de données dans une jointure doivent être identiques ou assez proches. Différentes collations, par exemple, détruit la convivialité d'un index.)