Memang benar bahwa TEXT dapat menangani input apa pun yang Anda tempatkan di bidang VARCHAR atau CHAR. Sebenarnya TEXT dapat menangani dan data yang mungkin ingin Anda masukkan ke dalam DECIMAL, INT, atau hampir semua jenis lainnya juga. Mengikuti logika ini, sebaiknya kita membuat setiap kolom menjadi tipe TEXT.
Tapi ini akan menjadi kesalahan. Mengapa? Karena menggunakan jenis kolom yang sesuai untuk input yang diharapkan memungkinkan database untuk mengoptimalkan kueri dengan lebih baik, menggunakan lebih sedikit ruang disk, dan membuat model data lebih mudah dipahami dan dipelihara.
Berkenaan dengan pertanyaan:kolom nama pengguna harus menggunakan VARCHAR (20), karena Anda ingin dan berharap bahwa sebagian besar nama pengguna akan pendek, biasanya tidak lebih dari 10 - 20 karakter. Untuk kolom resensi (seperti resensi film atau resensi buku) jenis TEXT akan sesuai karena resensi dapat mencakup satu paragraf hingga beberapa halaman.
Mengenai indeks, coba tautan ini:
http://20bits.com/articles/interview-questions-database-indexes/