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 :

[varchar en clef primaire] perte de performances?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut [varchar en clef primaire] perte de performances?
    afin de ficiliter le coté "user friendly" une partie de la base sur laquelle je bosse a des ID au format varchar, on me dit que cela n'entraine pas de perte de perf, est-ce vrai?

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Personnellement, je ne sais pas trop et je me suis toujours posé la question. En tout cas, j'ai souvent vu le conseil "utilisez des clés primaires numériques". Les rares fois où j'ai utilisé des clés primaires de type chaîne, c'était maximum 3 caractères. Pour des chaînes si petites, je pense que les performances ne sont pas dégradées par rapport à un INT.

    Tu peux lire ce post sur le forum officiel de MySQL pour avoir un autre avis : http://forums.mysql.com/read.php?21,...6252#msg-36252

  3. #3
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut
    merci

    edit : j'ai encore une question :

    et si je garde ce champ, que je rajoute un clef de type int.
    => si je fait des requetes SELECT basée sur mon vieux champ (varchar), mais avec des liens sur d'autres tables basée sur le INT.

    => aurais-je une perte de perf significative par rapport au "tout INT"

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT blabla 
    FROM T1, T2
    WHERE idNumT1 = idNumT2
    AND idVarChar = 'toto'

  4. #4
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut
    désolé, je repose la question en ajoutant cette données :

    les requetes full text accelerent elles les requetes basées sur des index varchar?

    nous n'en sommes pas certains, mais, dans le doute...

  5. #5
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Pour la question de la clé numérique ou varchar je te conseille de lire ceci : http://sqlpro.developpez.com/cours/m...ge=base#L2.5.1

    Un système hybride chaine/numérique ne grèvera pas énormément les performances mais il sera surtout beaucoup moins pratique à utiliser et maintenir (requêtes alambiquées, nécessité de vérifier en permanence la cohérence entre les 2 clés...)

    Quant aux requêtes FULLTEXT, elles utilisent un type d'indexation bien particulier. Un index classique, de par sa nature, ne permet que de chercher sur la partie gauche des valeurs. Ce qui veut dire qu'une requête comme "SELECT * FROM latable WHERE col1 LIKE '%toto'" n'utilisera pas d'index, contrairement à "SELECT * FROM latable WHERE col1 LIKE 'toto%'".
    En revanche, avec un index FULLTEXT on peut faire efficacement une recherche sur un mot situé en plein milieu d'une chaine, par exemple. Une telle indexation est bien plus adaptée aux problématiques du style moteur de recherche.

  6. #6
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut
    merci encore

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

Discussions similaires

  1. Clef primaire en nvarchar
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/04/2005, 15h50
  2. Comment comment définir une clef primaire dans une table??
    Par nek_kro_kvlt dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/02/2005, 21h06
  3. Passage du type integer vers varchar sur clé primaire
    Par GMI dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 09h09
  4. [VB.NET] [ADO.NET] Clef primaire auto incrémenté
    Par Guld dans le forum Accès aux données
    Réponses: 4
    Dernier message: 25/09/2004, 20h46
  5. récupérer la clef primaire d'une table
    Par orionis69 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/02/2004, 13h00

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