|
Почему скорость выполнения различается на порядок?
|
|||
---|---|---|---|
#18+
FB 2.5. ODS БД 11.2, размер страницы 8192. (файл базы прилагается). Вопрос, скорее, "филосовский" и может у кого будет время + желание взглянуть и рассказать в чем дело. Для посмотреть достаточно открыть базу в IBExpert и в SQL редакторе последовательно запустить два запроса: select * from sp_kletki_old --select * from sp_kletki Оба запроса вызывают селективные ХП. По данным в Експерте, первый выполняется за ~46 ms, второй за ~450 ms А результаты запроса, практически, одинаковые (в первом не хватает лишь 2 записи из 62-ти, отчего пришлось переделывать процедуру). Первая ХП сканирует представленный view полный набор данных и только формирует числа для двух колонок по которым на клиенте данные отображаются в виде дерева. Вторая выбирает данные из таблицы БД и чтобы сформировать эти две колонки вызывает другую ХП, при необходимости добавляя строки в НД (в представленной базе этих необходимостей всего 2 из 58 записей в таблице). Эта другая ХП вызывается на каждой итерации от 1 до 3 раз (в зависимости от того сколько записей предоставит другая ХП при первом вызове). Может быть в этом беда. Но в "старой" ХП запрос к view тоже неоднокртный. Планы выполнения, предоставляемые сервером, настолько разные, что глаза навыкате. По правде говоря, планы для меня как китайская грамота и по ним понять что-то не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2015, 09:09 |
|
Почему скорость выполнения различается на порядок?
|
|||
---|---|---|---|
#18+
Ну и каша. Даже читать лениво. Рассмотри вопрос создания индексов по полю id_kletki для таблиц molodye и pasporta, раз уж ты их присоединяешь по этому полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2015, 10:44 |
|
Почему скорость выполнения различается на порядок?
|
|||
---|---|---|---|
#18+
Для того, чтобы понять разность в скорости, достаточно знать, что FB некоторые условия отбора "продавливает" внутрь вьюхи, соответственно, выборка данных ограничивается ещё в начале. Процедура, соответственно, всегда отбирает все данные, и только на выходе уже будет фильтроваться. Неплохо бы также не 2 раза вызывать одну и ту же процедуру, чтобы отдельно посчитать COUNT и SUM с одним и тем же параметром, а сделать это за один раз. А то глаз слезится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2015, 10:57 |
|
Почему скорость выполнения различается на порядок?
|
|||
---|---|---|---|
#18+
В molodye ещё индекс по OWN просится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2015, 10:58 |
|
|
start [/forum/topic.php?fid=40&fpage=72&tid=1562648]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 136ms |
0 / 0 |