|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Вопрос к тем, кто уже испытывал производительность подобных вариантов. Имеем два варианта инициализации переменных в ХП: 1. Код: plsql 1. 2. 3. 4.
2. Код: plsql 1. 2. 3.
Возможно ли, что при количестве полей больше какого-то значения, интерпретируя BLR сервер выполнит вариант2 быстрее, чем варианта1? Если такое возможно, то каким должно быть количество полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:04 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, первый. Что за глупость rdb$database для инициализации использовать? Даже если при каких-то условиях второй окажется эффективней, то это будет экономия на спичках. Код при большом числе N во втором варианте воспринимать гораздо сложнее ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:06 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов ДенисЧто за глупость rdb$database для инициализации использовать?Я спрашиваю, а не утверждаю, ты же сразу - "глупость". К примеру, эту конструкцию разработчик может использовать, чтобы не нагружать визуальное восприятие исходного текста конструкцией BEGIN ... END. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:17 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, второй вариант - дурь какая-то. Право на существование имеет, а вот права на использование - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:17 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, а зачем ему обрамлять инициализацию переменных при помощи begin/end? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:18 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
kdvа зачем ему обрамлять инициализацию переменных при помощи begin/end?Зависит от того, используется ли ветвление при инициализации переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:58 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
kdvвторой вариант - дурь какая-то. Право на существование имеет, а вот права на использование - нет.На "нет" и суда нет... Всем спасибо за высказанные мнения! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:59 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, если по существу, то обращение к rdb$database даст 2 чтения страниц, с диска или из кэша. Так что в цикле такая операция будет сильно медленнее, чем без нее. Если не в цикле, то чтение этих двух страниц может привести к выпадению из кэша (если кэш заполнен) других двух страниц, которые будут более важны, чем rdb$database. Так что тоже косвенно повлияет на производительность. По моему опыту инициализация переменных, или получение значений системных переменных или функций через rdb$database в PSQL - это результат плохого понимания, зачем и почему вообще кто-либо пишет, например select myfuction(value) from rdb$database. Дальше, этот же код втыкается в PSQL, не раздумывая Код: sql 1. 2.
вместо нормального Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:30 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
kdv, за разъяснение отдельное спасибо! Помнится в MSSQL указание таблицы в предложении "SELECT" - необязательный элемент. Видимо, по этой же причине. Появился попутный, чисто теоретический вопрос - как сильно, в данном случае, меняет ситуацию использование пустой временной таблицы в "FROM"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:01 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, какой ещё на фиг пустой таблицы. Если ты из пустой таблицы SELECT сделать, то твои переменные не инициализируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:04 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов Денис, Он, видимо, подразумевал подобие DUAL с 1 записью в ней, просто сформулировать не смог. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:09 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
WildSery, просто затупил. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:11 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов Денис, Кстати, нет никаких препятствий, чтобы получать из пустой таблицы какие-то константные значения. Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:12 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, RDB$DATABASE в Firebird это не то же самое что Dual в Оракл. У нас RDB$DATABASE это настоящая таблица содержащая 1 запись, а не некая виртуальная заглушка. Обсуждение по поводу SELECT без FROM тут уже было. Отвергнуто так как не по стандарту. В принципе в стандарте есть такая вещь как ROW VALUE CONSTRUCTOR, которая может использоваться в качестве Derived Table. Что-то типа такого Код: sql 1.
или даже вообще вот так Код: sql 1.
в трекере это есть, но когда до этого руки дойдут неизвестно. Не самая приоритетная фича. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:12 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов ДенисВ принципе в стандарте есть такая вещь как ROW VALUE CONSTRUCTOR, которая может использоваться в качестве Derived Table.Вопрос, конечно, не в том, что будет, а в том как быть с тем, что есть, но оффтоп интересный. Периодически мечтаю о наличии в SQL сервере возможности создания динамического ROW SET'а с возможностью передачи его не только в конструкции внутри ХП, но и в качестве параметра между процедурами. ИМХО, очень бы пригодилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 14:25 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Hello, Wildsery! You wrote on 15 декабря 2016 г. 16:55:01: Wildsery> Он, видимо, подразумевал подобие DUAL с 1 записью в нейв Оракле раньше за смешивание контекстов отстреливали ноги. по самые уши. но с приходом в профессию неисчислимых полчищ школоты и леммингов, всем уже начхать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 16:57 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Мимопроходящий, где ты разглядел смешение контекста? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 02:12 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, ты про Оракл что-нибудь знаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 09:22 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов Денис, еще не имел удовольствия, но планирую ознакомиться. Пока что "глаза не добежали" даже почитать EULA. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 09:51 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, ну вот когда с Ораклом познакомишься, тогда и узнаешь что такое смешивание контекстов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 09:54 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов Денис, хотя бы контекстов чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 10:09 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, Тома Кайта почитай. Только правильно эта тема называется переключение контекстов. В Оракл pl/sql и sql код выполняют разные движки и соответственно возникают переключения контекста при переходе от одного кода к другому. Само по себе переключение контекста — это очень быстрая операция. По сравнению с выполнением sql-оператора — копейки. Т.е. выполнять для sql-запроса одно дополнительное переключение контекста ничего не стоит. Проблемой становится когда переключение контекста выполняется для каждого фетча в запросе или в цикле. Т.е. если запрос возвращает 100 млн строк, то будет 200 млн. переключений контекста ( туда-сюда), а это уже совсем другое дело. У них там для этого целые рецепты по оптимизации есть. З.Ы. В Firebird никакого переключение контекста не происходит, т.к. вся ХП вместе запросами выполняется как единый BLR. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 10:22 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
Симонов Денис, в общих чертах понятно, спасибо! Но, почему-то, желания знакомиться с Oracle DB не прибавилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 10:27 |
|
Какой вариант и когда оптимальней?
|
|||
---|---|---|---|
#18+
rdb_dev, так я вроде и не агитирую. Это ты тут подверг сомнению слова МП о контекстах, ничего не зная об Oracle. Пришлось вмешаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 10:39 |
|
|
start [/forum/topic.php?fid=40&fpage=50&tid=1561799]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 412ms |
0 / 0 |