Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ускорение запроса, который переводит строки в столбцы.
|
|||
|---|---|---|---|
|
#18+
есть 3 таблицы: 1. R_Register (id int (PK), date_register datetime) 2. S_Component(id int (PK), name varchar(100), caption varchar(100), type_value int) 3. R_Value(id int(PK), registerID(FK), componentID(FK),value varchar(512)) Нужно получить в виде столбцов порядка 100 значений из таблицы R_Value, по именам из таблицы S_Component, для записи из таблицы R_Register При извлечении большого кол-ва записей, время выполнения запроса настолько большое, что происходит отвал, по таймауту. Я пробовал сделать 1 запроса с объединением в виде join, получил, блокировки таблицы S_Component при вводе данных. Сделал View, c использованием вложенных select, и использованием для получения значений по имени функцией, получил уменьшение времени выполнения на 10%. Когда пришлось усложнить функцию для преобразования значения в зависимости от типа, то view упала, слишком сложный запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 11:30 |
|
||
|
Ускорение запроса, который переводит строки в столбцы.
|
|||
|---|---|---|---|
|
#18+
Чикуров В.В., Вы хоть на примере покажите, что вам надо получтить, какие запросы вы делаете для этого... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 22:39 |
|
||
|
Ускорение запроса, который переводит строки в столбцы.
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Вариант 1: select r.ID ,(select v.VALUE from R_VALUE as v where v.ID_Reg = r.ID and v.ID_COMPONENT = (select c.ID from S_COMPONENT as c where c.NAME like 'nomReg')) as nomReg -- таких запросов около 100 from R_REGISTER as r where r.DATE_REGISTER between '01.01'2014' and '31.12/2014' Вариант 2: select r.ID ,getValue_component(r.id, 'nomReg') as nomeg -- таких вызовов около 100 from R_REGISTER as r where r.DATE_REGISTER between '01.01'2014' and '31.12.2014' Create Function (idReg int, name_comp varchar(256)) returns varchar(256) begin atomic declare res varchar(256); set res = (select v.VALUE from R_VALUE as v where v.ID_Reg = idReg and v.ID_COMPONENT = (select c.ID from S_COMPONENT as c where upper(c.NAME) like upper(name_comp))); return res; end; Существует несколько функций, которые собирают несколько полей в одно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 16:27 |
|
||
|
Ускорение запроса, который переводит строки в столбцы.
|
|||
|---|---|---|---|
|
#18+
Чикуров В.В., Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2014, 23:39 |
|
||
|
Ускорение запроса, который переводит строки в столбцы.
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Проблема, в том что join ,блокирует работу по вводу данных в таблицу R_VALUE. У меня первый вариант был через join, похожий на ваш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2014, 13:35 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=43&tid=1600922]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 169ms |

| 0 / 0 |
