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

Développement SQL Server Discussion :

Valeur derniere insertion ROWGUID


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut Valeur derniere insertion ROWGUID
    Bonjour,

    Avec SQL Serveur lorsque nous avons un champs autoincremente nous pouvons recuperer sa valeur lors de l'insertion via @@identity.
    Existe t il l'equivalent pour recuperer la valeur d'un rowguid suite a insert?

    Merci,

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Absolument pas et il est TRÈS FORTEMENT déconseillé d'utiliser un UNIQUEIDENTIFIER (GUID ou UUID) comme clef primaire des tables !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Par défaut
    Je suis très curieux de savoir pourquoi SQLPRO ! Merci d'avance pour l'explication

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Parce qu'une colonne de type uniqueidentifier est stockée sur un paquet d'octet, je n'ai plus en tête combien mais c'est plus que 4 (espace utilisé pour stocker un int).

    Ce qui fait que, pour chaque table référençant cette clef primaire, ça va faire encore autant d'octets "perdus".

    En plus, vu que les clefs sont souvent la cible d'opérateur de comparaison, il est beaucoup plus rapide de comparer des données de type int que des données de type uniqueidentifier.

    Si mes souvenirs sont bons, à part si vous travaillez sur plusieurs serveurs en "load balancing" et qu'il faut tout centraliser après, pas la peine d'utiliser uniqueidentifier.

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    J'ai finalement retrouvé la place prise pour stockée un uniqueidentifier et c'est 16 octets. Soit 4 fois plus qu'un int et 2 fois qu'un big int.

    De plus, voici ce qu'on peut lire sur la page de la MSDN :
    The uniqueidentifier data type has the following disadvantages:

    • The values are long and obscure. This makes them difficult for users to type correctly, and more difficult for users to remember.
    • The values are random and cannot accept any patterns that may make them more meaningful to users.
    • There is no way to determine the sequence in which uniqueidentifier values were generated. They are not suited for existing applications that depend on incrementing key values serially.
    • At 16 bytes, the uniqueidentifier data type is relatively larger than other data types, such as 4-byte integers. This means indexes that are built using uniqueidentifier keys might be relatively slower than indexes using an int key.

    Le 4e point explicite plus en détail ce que je tentais de soulever.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Par exemple ans une jointure vous allez devoir faire 16 fois plus de tour dans le processeur en 32 bits qu'avec un simple INT pour calculer une jointure !

    En sus la fragmentation des tables est immédiate et très lourde avec un GUID du fait de son "aléatoirité" alors qu'avedc un incrément il n'y a pas de fragmentation vu que c'est en croissance monotone....

    A me lire : http://blog.developpez.com/sqlpro/p7...ent_le_verdict

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. select d'une soustraction entre 2 valeurs puis insert
    Par vinch999 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/04/2011, 16h23
  2. [AC-97] last insert into - dernier insert into
    Par coyote90 dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/02/2011, 19h59
  3. Calcul d'une valeur pour insertion dans la table des faits
    Par moheissenger dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 24/02/2010, 01h02
  4. Debutant copier/coller valeur dernier ligne colonne 13
    Par floflo83 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2009, 15h31
  5. [MySQL] afficher le dernier insert dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/02/2007, 11h58

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