Valeur nulle et optimisation

Valeur nulle et optimisation - SQL/NoSQL - Programmation

Marsh Posté le 24-08-2004 à 13:38:14    

Bonjour à tous,
 
Ma question est la suivante:
Est ce que ça vaut le coup de changer mes valeurs vides ('') par des NULL dans une table sous MySQL; ou est ce que cela n'aura pas une importance capital concernant la taille de ma base et des performances.  
 
Merci d'avance,
 
Fred

Reply

Marsh Posté le 24-08-2004 à 13:38:14   

Reply

Marsh Posté le 24-08-2004 à 16:35:37    

NULL <> '' d'un point de vue logique.
 
Donc à partir de là, pose-toi plutôt la question de savoir si l'un ou l'autre de ces valeurs à un sens dans ta base.
 
'' : Renseigné à vide
NULL : Non renseigné
 
Le meilleur exemple de différenciation, c'est avec des nombres.
0 <> NULL, parceque si tu fais la moyenne, tu n'obtiens carrément pas le même résultat !


Message édité par Arjuna le 24-08-2004 à 16:36:32
Reply

Marsh Posté le 24-08-2004 à 17:16:35    

Question perfs et taille, ça devrait rien changer, mais en effet, comme dit Arjuna, il vaut mieux se poser la question du point de vue fonctionnel.
 
Perso, j'ai pas encore vraiment trouvé de cas nécessitant de remplir un champ à '' ... en général, si on peut avoir une info qui n'est pas nécessairement remplie, faut que le champ puisse être null, quitte à utiliser un NVL ou DECODE (en Oracle par exemple) derrière.

Reply

Marsh Posté le 24-08-2004 à 17:36:05    

Beegee a écrit :

Question perfs et taille, ça devrait rien changer, mais en effet, comme dit Arjuna, il vaut mieux se poser la question du point de vue fonctionnel.
 
Perso, j'ai pas encore vraiment trouvé de cas nécessitant de remplir un champ à '' ... en général, si on peut avoir une info qui n'est pas nécessairement remplie, faut que le champ puisse être null, quitte à utiliser un NVL ou DECODE (en Oracle par exemple) derrière.


Bah avec Oracle c'est encore plus simple : tu utilises un VARCHAR2 et ce piniouf te met NULL dès qu'il y a '' dedans :D
 
C'est cool, parceque chez nous ça fait planter l'applicatif qui tape dans la base, du coup il faut saisir des ' ' systématiquement, pratique pour faire des requêtes après :D

Reply

Marsh Posté le 24-08-2004 à 17:51:57    

Et pourquoi tu fais pas plutôt un NVL(mon_info, '') dans ton applicatif ???

Reply

Marsh Posté le 24-08-2004 à 19:56:01    

Parceque l'applicatif est un ERP et sa base n'est pas censée être modifiée par des programmes tierces, hors lui il met des ' ' comme il faut...

Reply

Marsh Posté le 25-08-2004 à 08:03:03    

Je sais pas sous mySQL, mais sous SQL Server il est chaudement recommandé d'utiliser des valeur par défaut / vide / n'importe quoi d'autre que des valeurs null qui sont pas bonnes pour les perfs.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed