|
|
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
Есть запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. explain дает table access full по обеим таблицам. Есть ли возможность как-нить ускорить выполнение, учитывая что есть order by? И вообще в присутствии order by, or и всяких функций типа trunc имеет смысл использовать индексы или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:09 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
>explain дает table access full по обеим таблицам. Есть ли возможность как- >нить ускорить выполнение, учитывая что есть order by? И вообще в >присутствии order by, or и всяких функций типа trunc имеет смысл >использовать индексы или нет? почему бы не создать function-based индекс если он будет избирательным? что касается order by, то индекс будет использоваться только в случае однотабличного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:35 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
При наличии индексов: create index rpt_tv_tvchannel on rpt_tv(rpa_tvchannel); create index rpt_tv_tvstart on rpt_tv(rpa_tvstart); create index rpt_tvchannels_tvcid on rpt_tvchannels(rpa_tvcid); и собранной статистике можно изменить запрос так: select rpt_tv.rpa_tvtitle as tv_title, to_char(rpt_tv.rpa_tvstart,'HH24:MI') as tv_start, to_char(rpt_tv.rpa_tvstart-1/6,'YYYY.MM.DD') as tv_date, rpt_tv.rpa_tvstart-1/6 as temp_start, rpt_tv.rpa_tvdescr as tv_descr, rpt_tvchannels.rpa_tvcid as ch_id, rpt_tvchannels.rpa_tvcname as ch_name from rpt_tv, rpt_tvchannels where rpt_tv.rpa_tvchannel = rpt_tvchannels.rpa_tvcid and rpt_tv.rpa_tvstart between to_date('10.03.2003','DD.MM.YYYY')+1/6 and to_date('10.03.2003','DD.MM.YYYY')+1/6-1/(24*60*60) and rpt_tv.rpa_tvchannel in ('3','7', '22','32','35','38','49','51','ntvt','ort','ptp') order by tv_date,ch_id,temp_start Если план выполнения не устроит то дополнительно можно поиграться с хинтами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:40 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
а разве IN выполняется быстрее чем OR? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:42 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
>а разве IN выполняется быстрее чем OR? все зависит от плана выполнения, т.к. оптимизатор иногда сам преобразует IN в OR, и т.к. при этом таблица-источник читается много раз, то рез-тат может быть гораздо хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:50 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
Работать IN будет скорее всего так же (см. ответ dba) зато запрос выглядит симпатичнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:53 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
возможно будет оправдан bitmap-индекс на rpt_tv.rpa_tvchannel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 14:54 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
Когда-то ораклоиды говорили, что in и куча or'ов - эквивалентные конструкции (просто in транслируется в цепочку or). Может, в 9 что-то изменилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 15:13 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
по-моему ничего, да и что может изменится в булевой логике :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 16:12 |
|
||
|
"конкретный" вопрос
|
|||
|---|---|---|---|
|
#18+
>Когда-то ораклоиды говорили, что in и куча or'ов - эквивалентные >конструкции (просто in транслируется в цепочку or). Может, в 9 что-то >изменилось... чтоб не транслировалось надо добавлять хинт no_expand. В 8i так по крайней мере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 16:15 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32126696&tid=1991315]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 517ms |

| 0 / 0 |
