Det är sant att TEXT kan hantera vilken inmatning du vill placera i VARCHAR- eller CHAR-fält. Faktum är att TEXT kan hantera och data som du kanske vill lägga i DECIMAL, INT eller nästan vilken annan typ som helst. Med denna logik kan vi lika gärna göra varje kolumn till en TEXT-typ.
Men detta skulle vara ett misstag. Varför? Eftersom att använda lämplig kolumntyp för den förväntade inmatningen tillåter databasen att bättre optimera frågor, använder mindre diskutrymme och gör datamodellen lättare att förstå och underhålla.
När det gäller frågorna:en användarnamnskolumn bör använda VARCHAR(20), eftersom du vill och förväntar dig att de flesta användarnamn blir korta, vanligtvis inte mer än 10 - 20 tecken långa. För en recensionskolumn (som en filmrecension eller en bokrecension) skulle en TEXT-typ vara lämplig eftersom recensioner kan sträcka sig över ett stycke till flera sidor.
När det gäller index, prova denna länk:
http://20bits.com/articles/interview-questions-database-indexes/