Accueil > Forum > > > > Clés Primaire en VARCHAR
Clés Primaire en VARCHAR
vendredi 16 juin 2006 à 14:24:34 |
Clés Primaire en VARCHAR

ffert
|
Bonjour, Je souhaite créer des clés primaires en VARCHAR(30), mais j'ai peur que ce soit plus lent qu'avec un INTEGER ou un INTEGER Autoincrémental. surtout pour les références vers d'autres tables, les recherches ou les liens... Quelqu'un pourrait t'il me dire de quoi il en retourne. J'explique la raison : je gère une numéro incrémental unique pour ma base de donnée. mais je ne souhaite pas être limité par une integer à 11 digits par exemple, et également permettre d'ajouter des préfixes sur les valeurs de ces champs pour identifier par exemple, le lieux ou son saisie les données. (utile pour la synchro multisite)... Si vous voyez un inconvénient, ou des problèmes liésx à cela, ou bien d'autres solutions, merci de me tenir informé, avant que ma base de donnée ne soit terminée !!!.... ça m'aiderai beaucoup... MERCI d'avance. (Ps : Je travaille en MySQL pour modéliser la maquette, mais le final pourra être migré sur oracle ou Sqlserver ou postgrésql....) Fabien FERT [:)] www.sigmadia.fr.fm
|
|
samedi 17 juin 2006 à 03:46:47 |
Re : Clés Primaire en VARCHAR

crilun
|
crilun salut, un varchar sera toujours plus long sur une requete select qu'un integer, sachant que tu veut identifier les lieux ou sont saisies les données je pense qu'il serait plus judicieux de mettre 2 clefs à ta table avec un colonne de plus, une contenant un numero et l'autre le lieu,meme si pour cela tu doit gerer l'autoincrement toi meme, car d'apres ce que tu dis si tu ne veut pas etre limité à 11 digits c'est que ta table va contenir un nombre important d'enregistrements, par consequent l'insert etant plus rare que le select il vaut mieux privilegier le select, donc je pense que l'ajout d'une colonne en restant sur des champs integer sera plus judicieux, j'ai eu moi meme à faire une requete sur une table dont la clef etait un varchar et ou le nombre d'enregistrements etaient nombreux et malgré la présence de blade relativement puissant cela prenait quand meme du temps depassant parfois le time out. donc en résumé préfere la séparation de champs en restant sur des integer. ci@o++
|
|
dimanche 18 juin 2006 à 11:20:17 |
Re : Clés Primaire en VARCHAR

ffert
|
En fait, je veux gérer un identifiant unique pour l'ensemble de mes tables et de mes bases de données. J'ai 4 bases de données de natures différentes (MySQL, FoxPRo, Access, MSSQL). La plus importante est FoxPro avec plusieurs de ces tables pouvant avoir entre 400 000 à 500 000 nouveaux enrregistrement chaque années. Si je prend un integer 11 et un préfix de 3 (999 lieu pour avoir plus de marge que 2 pour 99)... il ne me reste que 8 digits pour numéroté les enregistrements des 4 databases, ça me semble un peu juste dans la durée... (autonomie de 2 à 3 ans je pense).
Mais la structure de mon système impose un ID unique pour l'ensemble des 4 bases de données toutes tables confondues !!!!!!! (Il se peut que dans un avenir proche je connecte de l'ORACLE)...
L'idée de prendre 2 champs n'est pas mauvaise, mais le problème c'est que d'autres utilisateurs pourront rajouter d'autres tables ou bien, pourront se connecter sur des tables existantes... ça obligerait alors à changer la structure de leur code en profondeur car, les ID ne serait plus sur un mais 2 champs.
Et si je prenais des CHAR(20) au lieu de VARCHAR(20) ? ça ne serait pas un peu plus rapide ? Ou bien un autre type ? Puis-je créer mes propres type (je crois que c'est faisable sur MySQL ? non mais je ne sais pas comment faire.)
Si vraiment je peux pas faire autrement je prendrais deux champs, mais ça ne m'arrange pas. Existe t'il des solutions pour permettre à des bases de données d'accepter des INTEGER de 20 digit par exemple, en créant son propre type d'integer ?? (je ne pense pas car ça doit faire partie du code compilé du serveur de base de donnée.)
Merci d'avance pour vos réponses.
Fabien FERT [:)] www.sigmadia.fr.fm
|
|
dimanche 18 juin 2006 à 11:53:12 |
Re : Clés Primaire en VARCHAR

crilun
|
crilun pourrait tu expliquer dans quel mesure les utilisateurs accèdent à tel ou tel type de base? par ce qe j'ai bien un truc à te proposer mais je ne suis pas sur que ca marche dans ton cas, c'est de mettre toujours 2 champs integer mais cette fois tu en rajoutes un 3ieme que tu rempli avec un trigger et qui est la concatenation des 2 premiers et qui lui est un varchar, ce qui te permet d'avoir les 2 premiers champs si tu veut obtenir des requetes plus rapide, ainsi que le 3ieme champ unique qui te permet de conserver ta structure. pour ce qui est de la difference entre le char et la varchar je ne sais pas si l'un est plu rapide ou non que l'autre, pour ce qui est de la creation des types que veut tu dire par la? tu parles peut etre de contrainte qui impose à un champ de repondre à un expression reguliere? masi ce n'est pas une optimisation car ca oblige le system a tester l'expression systematiquement et l'expression reste toutjours un varchar quand meme.
|
|
lundi 19 juin 2006 à 01:34:17 |
Re : Clés Primaire en VARCHAR

Malkuth
|
Réponse acceptée !
SALUT, et si tu prenait un entier long 64 bit (bigint sur sqlserver) 2^64 =18446744073709551616
18446744073709551616 id Différent ca fais déjà beaucoup mais tu ne dis pas clairement de combien d'ID tu as besoin par an donc quand a savoir l'autonomie que ca te donnerai ...
|
|
lundi 19 juin 2006 à 10:13:07 |
Re : Clés Primaire en VARCHAR

ffert
|
L'idée du BigInt me semble une trés trés bonne solution qui conviendrai à mes besoins je pense. Mais qu'en est-il de l'utilisation des BIGINT en tant que clés primaire ? à mon avis ça sera toujours plus rapide que les varchar. mais y a-t'il des contraintes particulières à utiliser des BigInt en tant que clé primaire ? (vue que nos serveurs ne sont pas encore 64 bit... et que j'ai lu quelque part que faire traiter un objet 64 bits par un processeur 32 bit prenais plus de temps que le double (2 x 32)... Mais réflexion faite ça sera tout de même plus rapide qu'un varchar je pense...) j'attend vos ultimes conseils. MERCI à tous d'avoir répondu. ça m'aide bien. Merci
Fabien FERT [:)] www.sigmadia.fr.fm
|
|
lundi 19 juin 2006 à 10:42:43 |
Re : Clés Primaire en VARCHAR

Malkuth
|
Le probléme du varchar c'est que tu vas utiliser les chiffres et (peut être les lettres) donc tu vas codé tes élément sur 30*8bits(240 bits) (et je parle pas d'un nvarchar) alors que tous ces bits ne seront pas des bit utiles, il sera toujours plus rapide de faire une recherche sur un element de 64bit que 240.
Enfin se sera plus long qu'un entier certe mais l'entier ne répondant pas a tes attente il faut bien accepter le sacrifice. Et de plus tous les clients n'auront que des int a changer par des long ca devrait pas être trop problèmatique ;)
|
|
lundi 19 juin 2006 à 15:26:41 |
Re : Clés Primaire en VARCHAR

ffert
|
MERCI BEAUCOUP. Je vais tester la solution avec les BIGINT. Vue que les ID sont unique sur l'ensemble de chaque base de donnée, les requêtes multitables (avec jointure) devrais être un petit peu plus rapide. Il me semble. En tout cas merci à tous. pour les tuyaux...
Fabien FERT [:)] www.sigmadia.fr.fm
|
|
Cette discussion est classée dans : souhaite, integer, primaire, clés, varchar
Répondre à ce message
Sujets en rapport avec ce message
requete MySQL [ par xactise ]
Bonjour et d'avance merci a ceux qui lisent mon post.j'ai un petit souci avec une requete SQL.j'explique ce que je souhaite faire : admetons qu'on est
Sélectionner le max d'une VarChar [ par PatBlarg ]
Bonjour, j'ai un gros problème de requête SQL. Plutôt 2 même...J'ai un logiciel qui écrit des donnée numérique dans une base de donnée SQL.Dépendant d
Probleme clés etrangere Oracle [ par Cormega92 ]
Bonjour, Je souhaiterais savoir comment définir des clés étrangères sur des tables déja créées (le nom du champ de la future clé étrangère est déjà cr
probleme pour creer le contenu de ma base de donne [ par laloire33150 ]
voici mon soucis, je travail avec phpmyadmin et je rentre ma requete dans une fenetre sql et voici l'erreur qu'elle me sort : requête SQL: -- -----
je ne comprend pas ou est le probleme [ par laloire33150 ]
Erreur requête SQL: CREATE TABLE annu( id int NOT NULL AUTO_INCREMENT , date varchar( 20 ) NOT NULL , auteur varchar( 50 ) NOT NULL , ns varchar( 5
Contrainte bizarre [ par arpala ]
Bonjour à tous,Alors voila, pour m'entrainer je m'amuse à créer des tables dans une base de donnée.Mais la je tombe sur un os.Primo mon fichier texte
Correction de Trigger [ par 4rocky4 ]
Bonjour tout le monde,Je voudrai créer des triggers qui permettent de mettre à jour des tables sous Oracle.Par exemple, si on modifie la clef primaire
problème de requête [ par suethi75 ]
Bonjour tout le monde,Je n'arrive pas à faire une requête. J'ai 3 tables, une s'appelle "produit" avec comme clef primaire "numBijoux", j'ai une autre
besoin d'aide pour generer un cle primaire [ par zied86 ]
bonjour;j'ai un table contenu (cle,id client,nom client,....)je veux que le cle se génère automatiquement de la forme suivante n° puis id puis anneec'
Livres en rapport
|
Derniers Blogs
[MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ![MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ! par redo
La Preview de Windows Explorer 9 est maintenant disponible à l'adresse suivante : http://ie.microsoft.com/testdrive/ Cette version ne nécessite pas un redémarrage de votre machine pour être exploitée . Cette version est fonctionnelle mais reste cependant ...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ![MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ! par redo
Dans la lignée du premier keynote, retrouvez la vidéo du second keynote en ligne : Visionnez la vidéo à l'url suivante : http://www.microsoft.com/presspass/events/mix/VideoGallery.aspx Vous y retrouverez ainsi les speakers Scott Guthrie, Dean Hachamovitch...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7[MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7 par redo
En avant première, Loic le retour d'expérience de Loïc Le Meur du portage de l'application http://seesmic.com/ sur plateforme Windows Phone 7 . c'était d'ailleurs une des rares opportunités de tester, voir toucher le nouveau device . voyez par vous-même :...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ![MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ! par redo
Si tout comme moi, vous avez manqué de peu le premier keynote du Microsoft Mix 2010, je vous invite à prendre deux heure et le consulter ci-dessous . Visionnez le Keynote à l'url suivante : http://www.microsoft.com/Presspass/events/mix/videoGallery.aspx?c...
Cliquez pour lire la suite de l'article par redo VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL
Forum
DESSINER MCDDESSINER MCD par debinfo
Cliquez pour lire la suite par debinfo
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|