IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[info]Auto_Increment : quand arrive à 65536 ?


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut [info]Auto_Increment : quand arrive à 65536 ?
    Salut à tous, j'utilise le type auto_increment sous MySql (mais le problème reste le même, j'imagine, dans toutes les autres db) de cette manière : id integer auto_increment

    Mais l'integer va de 1 à 65536, non ? Dans ce cas, que se passe t-il quand l'id arrive à cette limite ? Le serveur explose ? L'id revient à 0 ?

    Autre question : pour retrouver le dernier enregistrement effectué, est-il préférable de faire 'select max(id) from...' plutot que 'select last_inserted_id() from...', id étant ma colonne auto-incrémentée ?

    Merci !

  2. #2
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    A mon avis, cela dépend du type numérique sélectionné et il y en a de gigantesques!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Quel est le plus grand type de données sous MySql, au fait ? Est-ce qu'il est tellement grand qu'il se rapproche de l'infini : Je pense pas que dans mon application, je dépasserai ce type de données, mais ce problème doit bien se poser de temps à autres dans certaines applications, non ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Réponse :

    http://florian.developpez.com/faqmysql/#autoinc_depasse

    sinon le type int devrait suffir, 4 octets non signés tu as de la marge.

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut Re: [info]Auto_Increment : quand arrive à 65536 ?
    Citation Envoyé par FrigoAcide
    Autre question : pour retrouver le dernier enregistrement effectué, est-il préférable de faire 'select max(id) from...' plutot que 'select last_inserted_id() from...', id étant ma colonne auto-incrémentée ?
    utilise "last_inserted_id" :
    http://www.developpez.net/forums/viewtopic.php?t=174720

  6. #6
    pjl
    pjl est déconnecté
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par FrigoAcide
    Quel est le plus grand type de données sous MySql, au fait ? Est-ce qu'il est tellement grand qu'il se rapproche de l'infini
    L'infini, c'est bon pour les humais, pas pour les ordinateurs qui ne connaissent que 2 choses : 0 et 1.
    Ca me paraît tellement logique de chercher avant de demander que...
    A méditer.............

  7. #7
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par pjl
    Citation Envoyé par FrigoAcide
    Quel est le plus grand type de données sous MySql, au fait ? Est-ce qu'il est tellement grand qu'il se rapproche de l'infini
    L'infini, c'est bon pour les humais, pas pour les ordinateurs qui ne connaissent que 2 choses : 0 et 1.
    Personnellement je ne sais pas compter de 0 à Max(BIGINT) donc on peu dire que BIGINT est infini pour nous

    Pour le problème, il te suffit de te demander combien tu vas insérer de lignes dans ta table (un site de forum n'aura pas 65565 forums !) Par contre, sur un site tu peux avoir 65565 connexions, mais pas Max(BigInt) = 9.223.372.036.854.775.807 9 millions de milliards !!!! et ton disque dur sera saturé avant !

    Maintenant la facilité pourrait être de tout mettre en BIGINT, mais ta base (et surtout tes index) vont devenir énormes !
    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type      Octets    De                 A  
    TINYINT       1  -128                  127  
    SMALLINT      2  -32768                32767  
    MEDIUMINT     3  -8388608              8388607  
    INT           4  -2147483648           2147483647  
    BIGINT        8  -9223372036854775808  9223372036854775807
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut int a 65536 ?
    Juste pour info, le type 'int' s'adapte à la largeur du bus de données du système...

    Donc, pour des systèmes 16 bits (Win 3.1, DOC, ...), 1 'int' fait 16 bits = 2 octets (valeur max=65535 en non signé, 32768 en signé)

    Pour les systèmes 32 bits (Win95 et au-dessus), 1 'int' fait 32 bits = 4 octets (valeur max = plus de 4 milliards en non signé, plus de 2 milliard en signé)

    Bien sur, ici c'est le système sur lequel tourne le serveur de BD qui compte

    Voila

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Merci pour toutes vos réponses. Je pense qu'un int unsigned suffira largement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2008, 19h19
  2. comment marquer retard quand délai paiement arrive en dessous de zero
    Par marssupilamis1 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 18/10/2007, 17h20
  3. Empêcher le changement de page quand infos saisies
    Par fumesec dans le forum ASP.NET
    Réponses: 6
    Dernier message: 22/05/2007, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo