Очень теоретически можно организовать бэкап БД "одним запросом". И это будет запрос CALL stored_procedure(@datatbase_name);
А вот в хранимой процедуре будет дофига запросов. Нужно будет из INFORMATION_SCHEMA получить список всех имеющихся в БД объектов и организовать копирование информации во внешний файл (причём для каждой таблицы придётся делать два файла - один со структурой, второй с данными). А ещё надо не забыть про процедуры, функции, триггеры... в общем, задачка весьма нетривиальная. Лучше даже не начинать.
У SUBSTRING_INDEX накладные расходы великоваты. Я бы использовал
SELECT *
FROM table_name
ORDER BY 0 + SUBSTRING(column_name FROM 2)
А для совсем ускорения, если такая сортировка используется часто, можно создать индекс по соотв. выражению, а то и generated column с соответствующим индексом.