TEXTは、VARCHARまたはCHARフィールドに入力するすべての入力を処理できることは事実です。実際、TEXTは、DECIMAL、INT、またはその他のほとんどすべてのタイプに入れたいデータを処理できます。このロジックに従って、すべての列をTEXTタイプにすることもできます。
しかし、これは間違いです。なんで?予想される入力に適切な列タイプを使用すると、データベースでクエリをより適切に最適化し、使用するディスクスペースを減らし、データモデルの理解と維持を容易にするためです。
質問に関して:ほとんどのユーザー名は短くなり、通常は10〜20文字以下になると予想されるため、ユーザー名列ではVARCHAR(20)を使用する必要があります。レビュー列(映画レビューや書評など)の場合、レビューは1つの段落から複数のページにまたがることができるため、TEXTタイプが適切です。
インデックスに関しては、次のリンクを試してください:
http://20bits.com/articles/interview-questions-database-indexes/