Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем! DB2 WSE 9.7 Есть таблица TAB1 (REG_NUM - рег.номер, NAM - наименование). Задан список рег. номеров (R1, R2, ..., RN). Необходимо разработать sql-скрипт (выборку), который бы вытаскивал все записи из TAB1 по заданному списку рег.номеров. При этом, если в TAB1 запись по рег.номеру отсутствует, то в результирующую выборку должен попасть рег.номер без наименования. То есть, мы должны получить выборку из N записей (по количеству записей заданного списка), в котором могут быть заполнены (не заполнены, или заполнены не все) наименования. Как это сделать одним селектом без промежуточных добавлений во временные таблицы? Пока на ум приходит вариант: Код: plsql 1. 2. 3. 4. 5. Но он как-то долго отрабатывает есть еще варианты? С уважением, Семен Попов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 18:56 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Если такой запрос как-то долго отрабатывает, значит, с планом что-то не так. Индекса нет, статистика не такая... Далее идёт NLJOIN с N полных сканирований TAB1 (совсем плохо) или HSJOIN (одно сканирование) - это получше (разумеется, при некоторых сочетаниях данных это, наоборот, хорошо). Скорее всего, быстрее всего он должен работать при наличии индекса unique ... on TAB1(reg_num) include(nam [и другие интересующие поля] ) По виду запроса, TAB1(reg_num) и так должен быть уникальным. Быть может, на самом деле вместо TAB1 подразумевается какой-то VIEW. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 22:10 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, спасибо. Индексы посмотрим. Но я хотел бы узнать, вариант, который я предложил, будет единственным? В этом скрипте рег.номера перечисляются через запятую, каждое значение в скобках. Можно ли разработать скрипт, чтобы значения не нужно было заключать в скобки, а просто через запятую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 12:43 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Semen Popov, values 1, 2, 3 и values (1), (2), (3) это одно и то же. Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 12:52 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, спасибо. Что-то я сам не догадался проверить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:17 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
У меня других вариантов нет. Вещи наподобие Код: plsql 1. 2. 3. 4. 5. 6. мы ведь рассматривать не будем? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:58 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, думаю, что не будем. Представьте, если список заданных номеров состоит из 10 тыс записей (N=10000) :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 17:58 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Semen PopovVictor Metelitsa, думаю, что не будем. Представьте, если список заданных номеров состоит из 10 тыс записей (N=10000) :-))Если у вас такое огромное число значений может быть, то лучше через временную таблицу. Вставка записей, call admin_cmd('runstats on session.t with distribution'), основной запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 18:14 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39113472&tid=1600693]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 289ms |
| total: | 454ms |

| 0 / 0 |
