|
|
|
опять про это
|
|||
|---|---|---|---|
|
#18+
Народ я совсем запутался.\r У меня есть две больших таблицы 1 и 2.\r Когда идет запрос select * from 1,2 where условие для 1 and поле 1=поле 2(+)\r то где-то минута (приемлемо) а если \r select * from 1,2 where условие для 1 and условие для 2 and поле1=поле2(+), то не смог дождаться окончания выполнения\r Читал ветку\r /topic/16778\r попробовал select * from 1,(select * from 2 where условие для 2),2 where условие для 1 and поле1=поле2(+) тоже не дождался.\r Отдельно (select * from 2 where условие для 2) выполняется за 12 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 16:36 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
А по нормальному нельзя написать вопрос? Фактически ты написал вот что: У меня есть разные (А они у тебя разные) запросы, один из них работает быстро, а второй нет. Что делать? Нужны реальные запросы и планы их выполнения. А иначе ты не дождешься ответа :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 03:59 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
to Artfil: То что ты запутался - это понятно. А вопрос-то какой? Давай версии Oracle, планы выполнения запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:12 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
Долго молчал - готовился. Версия Оракла - 8.1.6 таблица t1 - 340 тыс. таблица t2 - 880 тыс. Запрос который делается быстро SQL> select count(*) from t1,t2 where t2.num2=t1.num1(+) and t2.val2 like '4402%' a nd t1.val1='40'; COUNT(*) ---------- 32 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 FILTER 3 2 NESTED LOOPS (OUTER) 4 3 TABLE ACCESS (BY INDEX ROWID) OF 'T2' 5 4 INDEX (RANGE SCAN) OF 'D23' (NON-UNIQUE) 6 3 TABLE ACCESS (BY INDEX ROWID) OF 'T1' 7 6 INDEX (RANGE SCAN) OF 'D1' (NON-UNIQUE) добавляем 1 условие select count(*) from t1,t2 where t2.num2=t1.num1(+) and t2.val2 like '440%' and t1.val1='40'; Не могу дождаться даже выполнения плана.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:35 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
Дополнение к последнему топику (выполнялся минут 20) SQL> select count(*) from t1,t2 where t2.num2=t1.num1(+) and t2.val2 like '440%' and t1.val1='40'; COUNT(*) ---------- 2420 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 FILTER 3 2 NESTED LOOPS (OUTER) 4 3 TABLE ACCESS (BY INDEX ROWID) OF 'T2' 5 4 INDEX (RANGE SCAN) OF 'D23' (NON-UNIQUE) 6 3 TABLE ACCESS (BY INDEX ROWID) OF 'T1' 7 6 INDEX (RANGE SCAN) OF 'D1' (NON-UNIQUE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:48 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
ну и что тут удивительного - просто в первом случае значение было более уточнено и index range scan выполнялся гораздо быстрее. P.S. Для того чтоб получить план запроса ненужно его выполнять. Например, в sql*plus надо сделать set autot trace exp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:59 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
Немного некорректные запросы привел, еще раз два запроса с разницей на одно условие SQL> select * from t1,t2 where t2.num2=t1.num1(+) and t2.val2 like '440%'; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 NESTED LOOPS (OUTER) 3 2 TABLE ACCESS (BY INDEX ROWID) OF 'T2' 4 3 INDEX (RANGE SCAN) OF 'D23' (NON-UNIQUE) 5 2 INDEX (RANGE SCAN) OF 'D1' (NON-UNIQUE) Выполняется быстро а запрос с добавлением дополнительного условия по t1 вводит сервер в глубокий ступор select count(*) from t1,t2 where t2.num2=t1.num1(+) and t2.val2 like '440%' and t1.val1='40'; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 FILTER 3 2 NESTED LOOPS (OUTER) 4 3 TABLE ACCESS (BY INDEX ROWID) OF 'T2' 5 4 INDEX (RANGE SCAN) OF 'D23' (NON-UNIQUE) 6 3 TABLE ACCESS (BY INDEX ROWID) OF 'T1' 7 6 INDEX (RANGE SCAN) OF 'D1' (NON-UNIQUE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 18:28 |
|
||
|
опять про это
|
|||
|---|---|---|---|
|
#18+
В последнем запросе тоже select * - для чистоты эксперимента... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 18:32 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2778&tid=1990554]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 308ms |

| 0 / 0 |
