Jump to content

Impact sur Base de Données


prosilver

Recommended Posts

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

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

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 by Hubert E-connecteur (see edit history)
  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...