Мне просто страшно лень вникать в стуктуры под этим запросом, потому просто задам дурацкий вопрос - а ПК, это нынче совсем не кошерно для джойнов? Без дбкЕя никак?

Кошерно, кошерно. Он тоже значительный прирост даёт.

Простой запрос:

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 переделать. Правда там наверное потери на лишние копирования данных будут. В общем как проверю - доложу...

Ответить