Такие данные приходят из внешнего источника, и по этому ключу они дальше связываются с другими (и у меня, и в источнике) - поэтому пришлось плясать вокруг него.Что мешало оставить его вторичным ключом и добавить цифровой индекс, по нему и связывать внутри своей системы, а наружу общаться по этому строковому ключу? Понимаю что задним умом все гении, но такое решение выглядит логичнее чем использование длинного чар кея в качестве примари... Собственно и сейчас можно еще попробовать добавить в качестве примари бигинт и в связанных таблицах внести его как ключ. Да, это займет время, но структура хоть будет пошустрее.
Статья от 11 годане думаю что в структуре хранения / индексирования этого типа данных что-либо кардинально поменялось, так как это базовый тип, функционально никак не изменившийся за эти годы.
И собственно вопрос индексы то надо создавать или нет?В статье кстати есть пункт о плохой оптимизации в плане скорости выборки по полю с небольшой селективностью, и накладных расходах на преобразование. Как выше посоветовал FanatPHP проще за 2 минуты проверить как влияет индекс на скорость, используя explain. Ну и от запросов конечно зависит.
// выводит ошибкучто вполне понятно. Либо используйте чейнинг, как описал Сергей delphinpro в ответе, либо в методе сразу можно вызвать другой метод класса через $this->someMethod().