Потратил таки немного времени на класс и могу вполне ответственно заявить, в построении запроса больше всего времени занимает не построение ВТ (причем какой бы сложности оно не было), соответственно работа с метаданными (вопреки моим мыслям) далеко не самое узкое место. Совсем я бы сказал не узкое.
Самые узкие места это:
1. Разбор и замена ключевых слов. Причем если их не много все равно их разбор и замена съедает как правило около 50% всего времени подготовки.
2. Разбор и замена функций запроса. Соответственно особенность такая же как и в п.1. Только доля около 20%.
3. Разбор и замена источников данных. Соответственно особенность такая же как в п.1. Только доля около 30-40%.
Не удивляйтесь что в сумме более 100%.

) это погрешности расчетов

.
Причем есть еще одна особенность, и связана она с тем как происходит подготовка запросов. Собственно говоря все что я напишу ниже является следствием моего неправильного подхода к построению класса.
Немного мыслей:
Изначально я считаю что самой глупой идеей было использование ключевых слов в русскоязычном написании. Ведь ничего сложного в том чтобы оставить селекты, фромы и прочее не было, а замене подлежал только синтаксис отличный от SQL. В таком случае все что надо было делать это привести один язык в соответствие с другим. И вот тут я жестко просчитался с самого начала. Собственно счас уже все является следствием этого просчета.
Разбор ключевых слов, функций и источников занимает как вы поняли около 70-80% времени. Причем если время растет это значение изменяется совершенно незначительно. Т.е. большой запрос = много времени, маленький = мало времени. Но доля всегда приблизительно равна.
И заключение: разбор текста происходит следующим образом:
- разбор всех ВТ (соответственно рост текста запроса очень большой)
- разбор всех особенных конструкций (первые, top/limit и пр.)
- разбор ключевых слов
- разбор функций
- разбор реквизитов и таблиц
Как это побороть? Я знаю, но время надо много.
Путь таков:
- перелопатить все ВТ чтобы там не было синтаксиса КОП-а
- изменить порядок обработки текста запроса, ВТ оставить на самый конец
- если не изменять порядок подготовки текста, тогда необходимо чтобы ВТ возвращались не готовым текстом а идентификаторами, и заменялись уже после реализации всей "пост"-обработки.
Вот так вот. Все эти записи - чтобы не забыть. А сделаю я это видимо к концу апреля.