Oracle
 sql >> Base de données >  >> RDS >> Oracle

Différence entre le type de données numérique et entier dans les vues de dictionnaire oracle

la meilleure explication que j'ai trouvée est celle-ci :

Quelle est la différence entre INTEGER et NUMBER ? Quand devrions-nous utiliser NUMBER et quand devrions-nous utiliser INTEGER ? Je voulais juste mettre à jour mes commentaires ici...

NUMBER stocke toujours comme nous l'avons entré. L'échelle est de -84 à 127. Mais INTEGER arrondit au nombre entier. L'échelle pour INTEGER est 0. INTEGER est équivalent à NUMBER(38,0). Cela signifie que INTEGER est un nombre contraint. La décimale sera arrondie. Mais NUMBER n'est pas contraint.

  • ENTIER(12.2) => 12
  • ENTIER(12.5) => 13
  • ENTIER(12.9) => 13
  • ENTIER(12.4) => 12
  • NOMBRE(12.2) => 12.2
  • NOMBRE(12.5) => 12.5
  • NOMBRE(12.9) => 12.9
  • NOMBRE(12.4) => 12.4

INTEGER est toujours plus lent que NUMBER. Puisque l'entier est un nombre avec une contrainte supplémentaire. Il faut des cycles CPU supplémentaires pour appliquer la contrainte. Je n'ai jamais observé de différence, mais il pourrait y avoir une différence lorsque nous chargeons plusieurs millions d'enregistrements sur la colonne INTEGER. Si nous devons nous assurer que l'entrée est constituée de nombres entiers, INTEGER est la meilleure option. Sinon, nous pouvons nous en tenir au type de données NUMBER.

Voici le lien