Quels sont les inconvénients de le faire?Est-ce une bonne pratique de définir la valeur par défaut de certains champs/colonnes comme NULL dans MySQL?
Répondre
L'inconvénient de permettre à une colonne d'être nulle affecte la logique métier - nul signifie effectivement qu'il n'y a pas de valeur associée, mais il pourrait y avoir. Si ce n'est pas correct pour vos règles métier, la colonne ne doit pas autoriser l'existence de valeurs nulles.
Les valeurs NULL sont dans certains cas connues pour être coûteuses à interroger, et certaines bases de données n'évaluent pas deux colonnes dont les valeurs de null sont équivalentes.
BTW: Bien que vous puissiez définir une contrainte DEFAULT pour rendre la valeur de la colonne nulle, cela représente plus de travail que nécessaire. Il y a trois éléments à une définition de colonne lors de la création ou la modification d'une table:
- Le nom de la colonne
- Le type de données pour la colonne
- Le optionalité - si la colonne permettra des valeurs nulles d'exister
est-il une bonne pratique pour définir la valeur par défaut de un champ/colonne comme NULL dans MySQL?
Je pense que oui. Parce que NULL prend la mémoire minimale quel que soit le type de données
Je pense que non ;-) L'économie d'espace est généralement hors de propos, mais le risque d'obtenir des résultats étranges lorsque vous ne savez pas comment utiliser les valeurs nulles augmente. – Brimstedt
Il n'y a aucun inconvénient à le définir comme par défaut, car cela importe juste une fois que vous ne lui définissez pas de valeur.
Si la valeur devient NULL, cela peut avoir des implications sur la recherche. C'est parce que MySQL regarde à travers les fichiers, et sauter des champs avec une longueur connue est facile, comme vous venez de sauter à travers cette longueur. Mais si une colonne peut contenir NULL, alors cela doit être vérifié avant que le saut ne soit fait. Cela ne prend pas trop de temps, donc je ne pense pas que cela ait autant d'importance. L'avantage est évidemment gain de place, mais le stockage est bon marché. C'est 2009 après tout. Le moyen le plus rapide de rechercher des choses est de définir toutes les colonnes NOT NULL, et plutôt utiliser des choses comme des chaînes vides et -1 (ou même 0, si cela ne veut rien dire d'autre) pour stocker des valeurs nulles. Cela ne prend pas beaucoup plus d'espace, et c'est toujours plus rapide, car la longueur des données est garantie. Cependant, si votre base de données est relativement petite et n'a pas besoin de filtrer 800 millions de lignes en 2 millisecondes, n'hésitez pas à utiliser les valeurs NULL. ;)
+1 .. bon raisonnement – Xinus
En fonction de votre SGBD, NULL sera la valeur par défaut. Autrement dit, une valeur NULL sera stockée chaque fois que vous ne fournissez pas de valeur, et aucune valeur par défaut n'a été définie (et, bien sûr, la valeur NULL n'est pas interdite).
Le coût réel de NULLS vient quand les valeurs doivent être interprétées. Utilisations SQL utilise une logique à trois valeurs étrange et parfois contre-intuitif dans l'évaluation des expressions où NULLs pourraient être impliqués. La troisième valeur est UNKNOWN, et la partie contre-intuitive est que NOT UNKNOWN est égal à UNKNOWN. Si vous ne faites pas attention, vous pouvez obtenir de mauvais résultats.
Une statistique comme SUM (COLUMN) peut être sous-estimée si certaines des entrées ont la valeur NULL dans la colonne, et ces entrées ont une valeur dans le monde réel. Mais le vrai coup de pied dans la tête vient de la tendance des concepteurs de bases de données et des programmeurs à utiliser NULL pour transmettre une sorte d'information significative, au lieu de simplement "NO DATA HERE". Cela provoque presque toujours des erreurs logiques. Si vous avez des données, stockez les données. Si vous n'avez pas de données, et aucun choix à ce sujet, enregistrez une valeur NULL. Et ne vous laissez pas tromper par l'absence de données.
L'omission manuelle des définitions de colonnes NOT NULL
a parfois un impact significatif sur les performances. J'ai donc pris l'habitude de l'inclure partout où je le peux.
- 1. mysql - puis-je définir la valeur par défaut de VARCHAR comme NULL?
- 2. Impossible de définir une URL comme valeur par défaut dans MySQL
- 3. MySQL - Définir la valeur par défaut pour le champ comme une fonction de concaténation de chaînes
- 4. Comment définir une séquence comme valeur par défaut via pgAdmin?
- 5. Définir une heure comme valeur par défaut dans gxt?
- 6. Comment définir la valeur par défaut de la chaîne vide TextBox au lieu de null
- 7. Comment définir une date-valeur par défaut Postgresql comme 'YYYYMM'?
- 8. définir les valeurs par défaut des colonnes de données, bonne pratique?
- 9. MySQL Valeur par défaut DATETIME
- 10. Comment définir la valeur null par défaut dans un champ de date dans sql server 2000?
- 11. comment définir null comme valeur entière sur le serveur mysql?
- 12. LinqDataSource: Comment définir une valeur par défaut
- 13. Définir une valeur par défaut dans la liste déroulante
- 14. Définir une valeur par défaut vide pour une colonne de caractères dans MySQL?
- 15. Pour définir une valeur par défaut pour une colonne dans une base de données par PostgreSQL
- 16. valeur par défaut de GUID dans une colonne dans mysql
- 17. Insérer une colonne null dans une colonne null avec la valeur par défaut FIREBIRD
- 18. Comment définir une valeur par défaut has_one dans ActiveRecord?
- 19. Définir document.title sur la valeur par défaut
- 20. WPF: Définir la valeur par défaut de la liaison
- 21. JasperReports: valeur par défaut au lieu de 'null'
- 22. Entity Framework Définir PreserveChanges comme valeur par défaut MergeOption
- 23. Numéros de séquence bonne pratique
- 24. Comment définir MySQL comme base de données par défaut dans Rails 3?
- 25. Comment définir une variable à la valeur par défaut?
- 26. Définir la valeur de date par défaut dans MySQL, similaire à horodater
- 27. Drupal - Définir la valeur par défaut dans hook_form_alter?
- 28. Comment définir une valeur par défaut de ComboBox VB.Net
- 29. comment définir la valeur par défaut dans la liste déroulante?
- 30. Comment résoudre "Impossible d'ajouter une colonne NOT NULL avec la valeur par défaut NULL" dans SQLite3?
La définition d'une valeur NULL par défaut est correcte. Ce qui ne va pas, c'est de faire un SELECT FROM TABLE OERE COLONNE EST NULL .... cela peut être très lent en effet. –