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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PROCEDURE MYSQLPROCEDURE MYSQL par gearmat
Cliquez pour lire la suite par gearmat
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|