2010-01-18 7 views
1

Donc, je créais une table pour les commentaires, et je me demandais. Quel serait un bon type pour les détails des commentaires? Je mets longtext. Eh bien, pourquoi les gens auraient besoin de varchar si longtext peut le gérer? Aussi, quel type aurais-je besoin pour les noms d'utilisateur?Questions sur les types dans MySQL

Quel est l'objectif de "primary" pour index? Quel est le but de l'index?

Mise à jour: Supposons qu'un commentaire soit en fait un commentaire.

Répondre

2

Il est vrai que le texte peut gérer toute entrée que vous souhaitez placer dans VARCHAR ou d'un champ CHAR. En fait TEXT pourrait gérer et les données que vous pourriez vouloir mettre dans DECIMAL, INT, ou presque n'importe quel autre type. En suivant cette logique, nous pourrions aussi bien faire de chaque colonne un type de TEXTE.

Mais ce serait une erreur. Pourquoi? L'utilisation du type de colonne approprié pour l'entrée attendue permet à la base de données d'optimiser les requêtes, d'utiliser moins d'espace disque et de faciliter la compréhension et la maintenance du modèle de données. En ce qui concerne les questions: une colonne de nom d'utilisateur devrait utiliser VARCHAR (20), puisque vous voudriez que la plupart des noms d'utilisateur soient courts, généralement pas plus de 10 à 20 caractères. Pour une colonne de révision (comme une critique de film ou une revue de livre), un type de TEXT serait approprié car les révisions peuvent s'étendre sur un seul paragraphe à plusieurs pages.

En ce qui concerne les indices, essayez ce lien:

http://20bits.com/articles/interview-questions-database-indexes/

0

Cela dépend de ce qu'est un "commentaire" dans votre système. En règle générale, VARCHAR est assez standard pour les commentaires et les noms d'utilisateur. Cela vous limite à environ 255 caractères, ce qui est généralement acceptable. Si vous avez besoin de plus de caractères dans vos commentaires, vous pouvez le convertir en un texte, ce qui vous donne un peu plus de 65k caractères. Pour plus d'informations, reportez-vous à String Types Reference.

+0

Comment savoir quel type permet quels caractères? Eh bien, pourquoi aurait-il besoin de varchar quand longtext chevauche sa fonction? Je suis sûr qu'il y a beaucoup de choses dans le monde qui fonctionnent de cette façon, mais j'essaie juste de creuser davantage pour voir s'il y a une raison particulière qui me manque. – Strawberry

+0

Utiliser longtext pour un commentaire ou un nom d'utilisateur, c'est aimer amener un bazooka à un combat d'eau. – Sampson

0

TEXT NOT NULL. Cela donne suffisamment de place, a un overhead de 2 octets, et ne présente généralement pas de problèmes.

En ce qui concerne TEXT

sur des comparaisons, le texte est un espace étendu pour adapter l'objet par rapport, exactement comme CHAR et VARCHAR. Pour les index sur les colonnes BLOB et TEXT, , vous devez spécifier un préfixe d'index longueur. Pour CHAR et VARCHAR, la longueur du préfixe est facultative. See Section 7.4.2, "Index de colonnes".

Les colonnes BLOB et TEXT ne peuvent pas avoir les valeurs par défaut .

Si vous utilisez l'attribut BINARY avec un type de données TEXT, la colonne est attribué le classement binaire de la colonne de caractères.

En ce qui concerne VARCHAR:

Les valeurs dans les colonnes VARCHAR sont chaînes de longueur variable. La longueur peut être spécifiée comme une valeur comprise entre 0 et 255 avant MySQL 5.0.3, et entre 0 et 65 535 dans les versions 5.0.3 et ultérieures. La longueur maximale efficace d'un VARCHAR dans MySQL 5.0.3 et est ensuite soumis à la taille de ligne maximale (65535 octets, qui est partagée entre toutes les colonnes ) et le jeu de caractères utilisé .

Plus sur: http://dev.mysql.com/doc/refman/5.0/en/blob.html

0

Jetez un oeil à ce web page, il répertorie tous les types de champs MySQL et décrit ce qu'ils sont et comment ils sont différents les uns des autres .