2010-08-03 9 views
8

par le Guide de programmation des données de base:de base de données - attributs en option et la performance

Vous pouvez spécifier qu'un attribut est option qui est, il n'est pas nécessaire d'avoir une valeur. En général, cependant, vous êtes découragé de faire donc-en particulier pour les valeurs numériques (généralement, vous pouvez obtenir de meilleurs résultats en utilisant un attribut obligatoire avec une valeur par défaut de -dans le modèle de 0). La raison pour cela est que SQL a comportement de comparaison spécial pour NULL qui est différent de Objective-C est nul. NULL dans une base de données n'est pas la même que 0, et les recherches de 0 ne correspondent pas colonnes avec NULL.

J'ai toujours fait des valeurs numériques non facultatives, mais pas pour les dates et les chaînes. Il est pratique dans mon code de baser la logique sur les dates et/ou les chaînes étant nulles. Basé sur les recommandations ci-dessus, je considère faire tout dans ma base de données non-facultatif. Pour les dates je pourrais mettre le modèle par défaut à une valeur de 0 et pour les chaînes un modèle par défaut de rien (""). Ensuite, dans mon code, je pourrais tester les dates pour [date timeIntervalSince1970]! = 0 et les chaînes pour string.length! = 0.

La question est, pour une base de données relativement petite, est-ce vraiment important d'une performance de base de données point de vue? Et quel est le compromis si l'attribut en question ne sera jamais directement interrogé via un prédicat?

Répondre

10

Je n'ai vu aucun problème de performances sur les ensembles de données de petite et moyenne taille. Je suppose que c'est quelque chose que vous auriez à traiter dans la phase de performance de votre demande.

Personnellement, j'utilise la même logique de non-numérique étant facultatif si cela est logique car cela rend le code plus facile, ce qui me donne plus de temps pour optimiser plus tard.

+0

Merci beaucoup Marcus! J'espérais que vous seriez le seul à répondre à cette question. Venant d'un ninja Core Data certifié me donne la confiance pour laisser ce problème derrière moi. – thevoid

+6

Si Marcus était vraiment un ninja Core Data alors on ne le verrait jamais ... à moins que ce soit ce qu'il veut que nous pensions. Les ninja sont des diables rusés. – TechZen

Questions connexes