Je dois créer un schéma de clé primaire pour un système qui nécessitera une réplication entre homologues. Donc, je prévois de combiner un ID système unique et un numéro séquentiel d'une manière ou d'une autre pour trouver des ID uniques. Je veux m'assurer que je ne manquerai jamais d'ID, donc je pense utiliser un champ varchar, puisque je pourrais toujours ajouter un autre personnage si je commence à manquer. Mais j'ai lu que les entiers sont mieux optimisés pour cela. J'ai donc quelques questions ...Quelle est la différence de performances entre int et varchar pour les clés primaires
1) Les entiers sont-ils vraiment mieux optimisés? Et s'ils le sont, quelle différence y a-t-il entre les varchars et les entiers? Je vais utiliser Firebird pour le moment. Mais je peux changer plus tard. Ou peut-être soutenir plusieurs DB. Je cherche donc des généralisations, si c'est possible.
2) Si les entiers sont nettement mieux optimisés, pourquoi? Et est-il probable que les varchars rattraperont leur retard dans le futur, alors finalement cela n'aura pas d'importance?
Mes clés varchar n'auront aucune signification, sauf pour la partie ID système unique. Mais je pourrais vouloir cacher cela d'une façon ou d'une autre. Aussi, je prévois d'utiliser efficacement tous les bits de chaque personnage. Je ne prévois pas, par exemple, de coder l'entier 123 comme la chaîne de caractères "123". Donc, je ne pense pas que les varchars nécessiteront plus d'espace que les entiers.
Combien de rangées comptez-vous stocker? – zerkms
La plupart des systèmes seront petits et généreront probablement moins de 50 000 lignes par an. Mais il est possible que j'ajoute des fonctionnalités qui devront stocker beaucoup plus. En outre, certains systèmes consolideront les données provenant de nombreux systèmes différents.Et cela pourrait potentiellement provenir de milliers de systèmes. Donc, plutôt que d'essayer de trouver un maximum de lignes, je pense que je ferais mieux de planifier un très grand nombre. A moins que la performance ne soit trop forte. Ensuite, je vais reconsidérer. – user568576