@evil0o Это ограничение InnoDB на длину ключа. Можно увеличить до 3072 байт параметром innodb_large_prefix. При этом в utf8 1 символ считается за 3 байта.
TEXT вообще надо использовать аккуратно, так как запросы с участием BLOB/TEXT, требующие временной таблицы, всегда приводят к созданию таблицы на диске(пруф), что скорости вашим запросам явно не прибавит.
В данном случае varchar будет более чем достаточно.
Для правильного вопроса надо знать половину ответа
Для связи 1-1 вообще нет смысла выделять отдельную таблицу, создайте поле в основной.
Тип TEXT для url вполне подходит, только ограничьте его длину до разумных значений (IE8, например, режет до 4121 символа).