Quelle différence utilise-t-elle en utilisant Ces choix affectent-ils les performances ou juste alloué de l'espace? P> tinyint code> ou
smallint code> (le cas échéant) au lieu de
int code> faire? Ou restreindre un champ
char code> sur les caractères minimum nécessaires? P>
4 Réponses :
Oui, cela affecte les performances aussi. P>
Si les index sont plus grands, il faut plus de temps pour les lire du disque, et moins peut être mis en cache en mémoire. P>
les deux, dans certains cas. Mais imo, c'est plus une question de conception que des considérations de performance et de stockage. La raison pour laquelle vous ne faites pas tout ce que vous ne faites pas tout varchar (...) code> est dû au fait que cela ne reflète pas avec précision quel type de données doit être stockée là-bas et réduit l'intégrité et la sécurité de votre type de données. < / p>
sur un champ indexé avec une table significativement grande, la taille de votre champ peut apporter un effet important sur la performance. Sur un champ non indexé, ce n'est pas presque aussi important que cela doit toujours écrire les données supplémentaires. P>
Cela dit, le temps d'arrêt d'un redimensionnement d'une grande table peut être plusieurs minutes ou plusieurs heures, même si vous ne les rendez pas plus petit que vous ne l'imaginez jamais besoin. P>
J'ai fréquemment vu ces trois défauts de conception de schéma, causant des problèmes: P>
Je n'ai jamais vu un bien intentionné (c'est-à-dire non seulement à l'aide de Varchar (255) pour tous les cols), mais la sélection conservatrice de la mauvaise taille des données entraîne des problèmes de performance significatifs. En signifiant, je veux dire facteur de 10. Je vois régulièrement des défauts de conception algorithmiques (index manquants, envoi de trop de données sur le fil, etc.), causant des hits de performance beaucoup plus importants. P>
Varcharne (255) doit être exactement aussi efficace que Varchar (10) car la taille est juste une taille maximale. MySQL n'utilise que le nombre d'octets nécessaires pour stocker le contenu. Ceci est différent d'un caractère où MySQL utilise exactement le nombre donné d'octets.
Quelle est votre plate-forme cible? Combien d'enregistrements avez-vous l'intention de stocker? Des informations comme ceci incluses dans votre question peuvent aider à guider une réponse appropriée.
Je n'ai pas de besoin spécifique (encore, pourrait avoir bientôt) je veux juste apprendre