Какой запрос эффективнее и почему?
- ArmanABL
- Автор темы
- Не в сети
- COM_KUNENA_SAMPLEDATA_RANK1
Меньше
Больше
- Сообщений: 1
- Спасибо получено: 0
08 нояб 2017 12:33 #1
от ArmanABL
COM_KUNENA_MESSAGE_CREATED_NEW
1. OPEN QUERY q FOR EACH acct WHERE RECID(acct) = vRc NO-LOCK.
GET FIRST q NO-LOCK.
2. FIND FIRST acct WHERE ROWID(acct) = vRw NO-LOCK
1. OPEN QUERY q FOR EACH op WHERE op.class-code BEGINS "opb" AND op.op-transaction = 10 NO-LOCK.
GET FIRST q NO-LOCK.
2. FIND FIRST op WHERE op.class-code BEGINS "opb" AND op.op-transaction = 10 NO-LOCK
Для таблицы op есть индексы:
Class-code (class-code)
Op-transaction (op-transaction
GET FIRST q NO-LOCK.
2. FIND FIRST acct WHERE ROWID(acct) = vRw NO-LOCK
1. OPEN QUERY q FOR EACH op WHERE op.class-code BEGINS "opb" AND op.op-transaction = 10 NO-LOCK.
GET FIRST q NO-LOCK.
2. FIND FIRST op WHERE op.class-code BEGINS "opb" AND op.op-transaction = 10 NO-LOCK
Для таблицы op есть индексы:
Class-code (class-code)
Op-transaction (op-transaction
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- alex_sar
- Не в сети
- COM_KUNENA_SAMPLEDATA_RANK3
Меньше
Больше
- Сообщений: 76
- Спасибо получено: 12
09 нояб 2017 15:01 #2
от alex_sar
COM_KUNENA_MESSAGE_REPLIED_NEW
На мой взгляд эффективней 2-ые варианты.
1. Сам Progress рекомендует использовать ROWID вместо RECID;
2. QUERY - это так или иначе объект в памяти.
1. Сам Progress рекомендует использовать ROWID вместо RECID;
2. QUERY - это так или иначе объект в памяти.
Спасибо сказали: ArmanABL, AndrABL
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- AndrABL
- Не в сети
- COM_KUNENA_SAMPLEDATA_RANK1
Меньше
Больше
- Сообщений: 1
- Спасибо получено: 1
01 дек 2017 13:47 #3
от AndrABL
COM_KUNENA_MESSAGE_REPLIED_NEW
alex_sar, Спасибо!
Спасибо сказали: ArmanABL
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.155 секунд