Prawdą jest, że TEXT może obsłużyć dowolne dane wejściowe, które umieścisz w polu VARCHAR lub CHAR. W rzeczywistości TEXT może obsłużyć i dane, które możesz chcieć umieścić w DECIMAL, INT lub prawie każdym innym typie. Podążając za tą logiką, równie dobrze możemy nadać każdej kolumnie typ TEKST.
Ale to byłby błąd. Czemu? Ponieważ użycie odpowiedniego typu kolumny dla oczekiwanych danych wejściowych pozwala bazie danych na lepszą optymalizację zapytań, zużywa mniej miejsca na dysku i sprawia, że model danych jest łatwiejszy do zrozumienia i utrzymania.
W odniesieniu do pytań:kolumna nazwy użytkownika powinna używać VARCHAR(20), ponieważ chciałbyś i spodziewał się, że większość nazw użytkowników będzie za krótka, zwykle nie dłuższa niż 10-20 znaków. W przypadku kolumny recenzji (takiej jak recenzja filmu lub recenzja książki) odpowiedni byłby typ TEKST, ponieważ recenzje mogą obejmować jeden akapit do kilku stron.
Jeśli chodzi o indeksy, wypróbuj ten link:
http://20bits.com/articles/interview-questions-database-indexes/