Ce qui est plus rapide: char(1) ou de type tinyint(1) ? Pourquoi?

DE MA PLATE-FORME:

PHP & mySQL

MA SITUATION:

Je suis tombé sur une situation où j'ai besoin de stocker une valeur pour la sélection de l'utilisateur dans l'une de mes colonnes d'une table. Maintenant, mes possibilités:

  1. Soit déclarer la Colonne de type char(1) et de stocker la valeur 'y' ou 'n'
  2. Ou de déclarer la Colonne de type tinyint(1) et de stocker la valeur 1 ou 0
  3. Cette colonne déclarée, peut aussi être indexés pour l'utilisation dans l'application.

MES QUESTIONS:

Donc je voulais savoir laquelle de ces deux types:

  1. Conduit à une accélération de la vitesse des requêtes lorsque cette colonne est accessible (par souci de simplicité, nous allons laisser de côté le mélange d'autres requêtes, ou accéder à d'autres colonnes, s'il vous plaît).

  2. Est le moyen le plus efficace de stocker et d'accéder à des données et pourquoi?

  3. Comment la vitesse d'accès varier si les colonnes sont indexées et quand ils ne le sont pas?

Ma compréhension est que, depuis char(1) et de type tinyint(1), ne représentent que 1 octet de l'espace, de l'espace de stockage ne sera pas un problème dans ce cas. Alors que resterait-est de la vitesse d'accès. Autant que je sache, numérique indexation est plus rapide et plus efficace que n'importe quoi d'autre.
Mais le cas ici est difficile de décider, je pense. Vraiment envie d'entendre votre expérience sur celui-ci.

Vous en remercie d'avance.

  • Profil et laissez-nous savoir les resoult.
  • Une fausse dichotomie, il y a aussi enum('1','0') (par exemple).
  • la question n'a rien à voir avec php, donc j'ai enlevé la balise php
  • L'indexation d'un champ avec deux valeurs possibles est assez inutile.
  • Le type de la colonne a peu d'influence sur sa pertinence à des fins d'indexation. Si vous mettez la colonne dans un WHERE clause et il n'y a aucun indice de sa va faire un full table scan quel que soit le type.
  • WOW! Ne pas s'attendre à ce que cette question serait même vu & a répondu à plusieurs reprises, dans un petit moment. @erenon: Pardon pour mon ignorance, mais comment dois-je faire? Ne phpmyadmin est un outil pour que (je ne sais qui encore) @ricebowl Bonne, mais il y a un truc en elle, comme mentionné par Langdon. Veuillez vous référer à son commentaire. @streetparade: c'est ok, mais regarde comme il a aidé les autres utilisateurs comme Matchu et Zombat pour spécifier un point dans leur commentaire. @récursive je suis d'accord avec Schwern totalement sur ce point. Sur une table avec un million de lignes, un no-index scan serait inutile. Donc, bon à utiliser.

InformationsquelleAutor Devner | 2010-01-07