Мне просто страшно лень вникать в стуктуры под этим запросом, потому
просто задам дурацкий вопрос - а ПК, это нынче совсем не кошерно для
джойнов? Без дбкЕя никак?
Кошерно, кошерно. Он тоже значительный прирост даёт.
Простой запрос:
Prepare time = 31ms
Execute time = 2s 547ms
Avg fetch time = 4.93 ms
Переделанный через Derived table с использованием ПК:
Prepare time = 16ms
Execute time = 625ms
Avg fetch time = 1.21 ms
Но ситуация такова что в том проекте у нас каждая милисекунда на счету,
поскольку это позволит показать чуть большие цифры клиентам. Так что
если даже я выиграю 10-20 мс на одном запросе, то это на стресс-тестах
может прибавить с десяток другой дополнительно обработанных сервером
запросов. Другое дело что я не смог пока узнать что бы дало
использование DB_KEY. Может там 50 мс, а может и все 250.
Вот что Цизар писал о дбкеях: "Current DB_KEY retrieval method is far
much faster than retrieval with use of index (no index scan is needed at
all, engine computes the exact row location from DB_KEY value)".
Может попробую на EXECUTE BLOCK переделать. Правда там наверное потери
на лишние копирования данных будут. В общем как проверю - доложу...