Индексируется кусок строки. Какой длины (сколько первых символов) - определяешь ты. Отсюда и вывод - если тебе нужно искать по ВСЕЙ строке , то используй VARCHAR , а если ты никогда не ищешь больше, чем определенное кол-во символов в начале , то возможно и TEXT подойдет.
А как вы себе представляете индексы в СУБД? Индексирование, по-сути разбиение таблицы на части, чтобы при поиске проходить не все строки, а только часть. Какой длины должен быть индекс вопрос сложный, очень зависит от содержимого полей. Если начала строк различаются, то достаточно очень маленького индекса, если очень много строк с одинаковым началом, то увеличивайте длину индекса до момента различая.