0
votes

Différence de Bigint et Varchar, Longueur 16 caractères

J'ai des questions sur la meilleure solution pour stocker le code de numéro

(Exemple: 1234123412341234).

Ce code a toujours 16 caractères et est une valeur numérique!

J'utilise un moteur InnoDB pour stocker la table

Actuellement, j'ai le type de colonne Varchar (16) mais j'ai des pensées si Bigint est mieux pour cela.

Le code de colonne n'est pas modifié après ajouté à la base de données.


3 commentaires

Si la valeur va toujours être un nombre entier, et ce n'est pas supérieur à (2 ^ 64) -1 (qui est assez grand pour vous), puis en utilisant un Bigint sera meilleur.


Si vous souhaitez des chiffres, utilisez un format de numéro. Les chaînes doivent être coulées à des chiffres.


Cela ne fait vraiment aucune différence (ou presque aucune différence)


3 Réponses :


0
votes
  • Bigint nécessite 8 octets pour stocker un nombre, tandis que Varcharate (16) nécessitera au minimum la double quantité d'octets. Selon le jeu de caractères utilisé, même 4 fois plus. Donc, le type de Bigint permettra d'économiser de l'espace sur votre disque, mais réduisez également le trafic réseau.

  • Un Varchar (16) ne sera pas en mesure de représenter tous les nombres de Bigint. Une plus grande valeur de 0xFFFFFFFFFFFFFFFFE ne peut pas être stockée dans une colonne Varcharchar (16).

  • au niveau de la machine, une comparaison de 16 octets se produit généralement en un cycle, tandis que la comparaison des chaînes est beaucoup plus chère, car Varcharre nécessite un octet à la comparaison des octets.


0 commentaires

0
votes

Vous devez choisir le type de données en fonction des données que vous avez.

Par exemple, un numéro de carte de crédit est une chaîne de caractères (même si elle contient des chiffres), un numéro de téléphone est également une chaîne de caractères (car la chaîne peut par exemple avoir des zéros de premier plan, etc.).

Un numéro avec la valeur numérique doit être stocké sous forme de nombre (une distance de la lune par exemple).


0 commentaires

0
votes

La question clé à poser est quelles opérations avez-vous besoin de faire sur les données ?

  • Un type de données numérique comme Bigint peut être utilisé avec des opérations telles que l'addition, la soustraction, la multiplication, la division. Les valeurs seront normalisées de sorte que 1 , 001 , 1.0 , etc sera tous stocké identique.
  • Un type de données de chaîne comme varchar peut être utilisé avec des opérations telles que des correspondances sous-chaînes. Il peut stocker des valeurs telles que 0001 sans les normaliser.

    Il est très rare qu'un seul morceau de données nécessite à la fois ces types d'opérations. Par exemple, vous voudrez peut-être rechercher tous les numéros de téléphone commençant "1800", mais n'aurait jamais besoin de diviser un numéro de téléphone par 3.

    Ainsi, lorsque vous dites que vos données sont un "code de numéro", vous devez penser si cette valeur est en réalité un numéro ou juste une chaîne qui est tous des chiffres.


0 commentaires