prosilver Posted February 22, 2017 Share Posted February 22, 2017 Bonjour, P'tite question pour ma culture personnelle ! Est-ce qu'il y a un impact quelconque sur l'ordre et la structure d'une table de base de données ? Par exemple, sur une BDD de Presta. la table "customer" fraichement installée, j'ai : CREATE TABLE IF NOT EXISTS `ps_customer` ( `id_customer` int(10) unsigned NOT NULL, `id_shop_group` int(11) unsigned NOT NULL DEFAULT '1', `id_shop` int(11) unsigned NOT NULL DEFAULT '1', `id_gender` int(10) unsigned NOT NULL, `id_default_group` int(10) unsigned NOT NULL DEFAULT '1', `id_lang` int(10) unsigned DEFAULT NULL, `id_risk` int(10) unsigned NOT NULL DEFAULT '1', `company` varchar(64) DEFAULT NULL, `siret` varchar(14) DEFAULT NULL, `ape` varchar(5) DEFAULT NULL, `firstname` varchar(32) NOT NULL, `lastname` varchar(32) NOT NULL, `email` varchar(128) NOT NULL, .... ... Sur une base modifiée : CREATE TABLE IF NOT EXISTS `ps_customer` ( `id_customer` int(10) unsigned NOT NULL, `email` varchar(128) NOT NULL, `company` varchar(64) DEFAULT NULL, `id_gender` int(10) unsigned NOT NULL, `id_lang` int(10) unsigned DEFAULT NULL, `id_risk` int(10) unsigned NOT NULL DEFAULT '1', `id_shop_group` int(11) unsigned NOT NULL DEFAULT '1', `siret` varchar(14) DEFAULT NULL, `ape` varchar(5) DEFAULT NULL, `firstname` varchar(32) NOT NULL, `lastname` varchar(32) NOT NULL, `id_default_group` int(10) unsigned NOT NULL DEFAULT '1', `id_shop` int(11) unsigned NOT NULL DEFAULT '1', .... ... Link to comment Share on other sites More sharing options...
Johann Posted February 22, 2017 Share Posted February 22, 2017 D'un point de vue fonctionnel, aucune différence selon l'ordre des colonnes. Après, je ne suis pas non plus un super expert SGBD, peut-être qu'au niveau performances, optimiser l'ordre des colonnes selon les requêtes les plus lourdes par exemple influe sur les perfs, mais pas évident ! Link to comment Share on other sites More sharing options...
prosilver Posted February 24, 2017 Author Share Posted February 24, 2017 D’accord, je prends note parce que une base qui est moulinée par des maj depuis des années, certaines colonnes des tables ne sont pas toutes à l'origine ! Link to comment Share on other sites More sharing options...
Hubert E-connecteur Posted February 24, 2017 Share Posted February 24, 2017 (edited) Bonjour, En fait l'ordre a bien un impact sur les performances, même si cela reste anecdotique. C'est aussi une convention de placer dans l'ordre en mettant l'index primaire, puis les clés diverses et enfin les autres colonnes. Petit exemple pour illustrer, imaginons cette table simple : id int, (clé primaire) name varchar, (valeur) id_foreign int, (clé étrangère) Pour récupérer la valeur de id_foreign, dans une requête type SELECT id, id_foreign FROM table, le moteur MYSQL (ou autre) doit connaître la taille de la colonne name, or, la colonne name est un VARCHAR (donc variable), la taille doit être "calculée". Donc les index divers, qui sont le plus utilisés dans les requêtes doivent être placés avant les colonnes de type largeur variable (dont les VARCHAR). Edited February 24, 2017 by Hubert E-connecteur (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now