Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.09.2020, 11:35
|
|||
---|---|---|---|
exists или join с группировкой? |
|||
#18+
Делаю синхронизацию ИС с битриксом. У битрикса имеется ограничение по частоте запросов, а в ИС нет событий. Поэтому синхронизацию делаю периодическим получением исходных данных с определением изменившихся записей. В таблице CL дата предыдущей синхронизации хранится в поле MOMENT, соответственно мне нужно найти записи, у которых были изменения после MOMENT. Есть такой запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Его можно сделать и так: Код: plsql 1. 2. 3. 4. 5. 6.
На тестовых данных он и выполняется быстрее, и explain plan выглядет проще. Но меня когда-то давно учили избегать сложных подзапросов в select. Не подскажите, в данном случае какой способ лучше? Некоторые проверяемые наборы данных могут быть немаленькими (десятки миллионов записей), хотя по используемым полям есть индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.09.2020, 12:41
|
|||
---|---|---|---|
|
|||
exists или join с группировкой? |
|||
#18+
Alibek B., Когда оперативные данные нужно получать из лога, это отвратно спроектированная система. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.09.2020, 13:52
|
|||
---|---|---|---|
exists или join с группировкой? |
|||
#18+
Alibek B., я exist писал иначе (возможно из-за непонимания case when exists () ...) ,(select 1 from dual where exists (select * from BM_ACTION_LOG where CUSTOMER_ID = CL.CLIENT_ID and MOMENT >= CL.MOMENT and ACTION_ID < 1000)) FLAG_LOG ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1880866]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 165ms |
0 / 0 |