Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: как заставить Oracle использовать индекс  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
yura1973,

Если б ты действительно хотел, чтоб тебя выручили, ты бы предоставил воспроизводимый тест кейс а не бессвязный поток символов.
При текущем положении вещей, ни у кого нет желания с тобой связываться.
3 ноя 13, 14:28    [15071645]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Кристобаль Хозевич
Member

Откуда: тутошний
Сообщений: 250
yura1973
ДА, и не гнобить, это просьба

Тогда "и приходить трезвым". Это - требование.
3 ноя 13, 15:17    [15071770]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Да не хочется. Форум в последнее время обыдлел, Я еще понимал, когда вы студентов хаите. Но так, уж извините. Хотя, может, вы и правы. Да, к вопросу:
Ограничение(where), никак не влияет на результат запроса, вопрос только во времени выполнения, с этого вся эта помойка и началась, если кто помнит. Спасибо всем, кто участвовал.
9 ноя 13, 07:02    [15101901]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Кристобаль Хозевич. а это кто? Я считал, что это не срамбл...
По теме, row_number() over (prtition by t1.id orde by ............)
Аналитика здесь не мешает, хотя согласен, сам частенько забываю о НЕЙ.
9 ноя 13, 07:43    [15101914]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Виноват, (partition tab1.id order by ...."тут не важно")
9 ноя 13, 07:50    [15101915]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
и съели кука
Guest
yura1973
Кристобаль Хозевич. а это кто? Я считал, что это не срамбл...
Не хочется тебя расстраивать, но это таки срамбл.
Расскажи на трезвую голову в чем проблема и что надо получить. В приведенных запросах не должно быть комментариев или многоточий.
9 ноя 13, 08:46    [15101944]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
то и съели кука
не понял совета (это не про срабл...)
Я много (может не достаточно), я перечитал (я тем в этой помойке не создаю, не приятно - ФОРУМ для студентов), тут сломался ( НЕ ХОТЕЛ), пришел домой и сформулировал вопрос, который меня мучил
, а ТУТ, такое го....., не ожидал. Админы, забаньте. ФОРУМ стал говном из-за оскорблений, может кто-то и хуже вас по знаниям, но это не повод кого-либо оскорблять (Тем более людей, которые с этим связаны)
P.S. То Elic, шутка шутке рознь, ты мне раньше нравился своим умением иронизировать, но ты сломался (или сломали, так совет - оставайся таким каким ты был, и не слушай никого, я писал об этом же)
P.S.S. Просьба, не начинайте помойку
9 ноя 13, 10:04    [15101998]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
и съели кука
Guest
А то что ты в неадеквате тут шатаешься, это типа нещитово?
Форум, конечно, г-но ещё то, что поделать, но другого форума на русском у меня для тебя нет.
9 ноя 13, 10:21    [15102019]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
---create view v_tab as 
with t1 as (--десятки миллионов записей
select 
       tab1.id, ................,
       row_number() over (partiion by tab1.id   .........) as RN
from tab1
join tab2 on tab1.partition = tab2.partition and tab1.id1 = tab2.id1
join tab3 on tab3.partition = tab2.partition and tab3.id1 = tab2.id1
 where 1 = 1
   ----and tab1.id = 1234656789 ---- !!!!!!!!!!!!!! 20 записей - 0,1 сек INDEX SCAN tab1 -- случай 1
           ), --t1
     t2 as (
select *
from (     
select id,..................... from t1
 union all
select id,..................... from t1 where RN = 1 
      )
where id is NOT NULL      
), -- t2           
     t3 as (select id, COUNT(*) from t1
             group by id
            
            )
select 
        * 
from t3
 where 1 = 1
   ----and t3.id = 1234656789 ---- !!!!!!!!!!!!!! 400 сек FULL SCAN t1 materialize t1 -- случай 2
;           
Индекс в случае 1 работет, в случае 2 НЕТ, о чем я и спрашивал, "Как заставиь Oracle использовать индекс"

Для тех, кто интересуется правильностью результата, повторю - Меня все устраивает по результатам
9 ноя 13, 10:29    [15102029]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
То и съели кука
Это я и так знаю, спасибо не оскорбил
9 ноя 13, 10:35    [15102037]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Я прошу прощения, может недосказал, хотя на результат не влияет
---create view v_tab as 
with t1 as (--десятки миллионов записей
select 
       tab1.id, tab1.status_id_1, tab2.status_id_2,tab2.dt as dat, tab2.status_id_1, tab2.dt as dt_start,
       tab1.dt as dt_create, tab1.status_id,
       row_number() over (partitiion by tab1.id order by tab2.id) as RN,
       lead(tab2.dt, 1 , sysdate) over (parttiion by tab1.id order by tab2.id2) as dt_end --- Аналитика, забываю о ней всегда
from tab1
left join tab2 on tab1.id1 = tab2.id2
 where 1 = 1
   ----and tab1.id = 1234656789 ---- !!!!!!!!!!!!!! 20 записей - 0,1 сек INDEX SCAN tab1 -- случай 1
           ), --t1
     t2 as (
select *
from (     
select id,..................... from t1
 union all
select id,nvl(status_id_2, status_id_1) from t1 where RN = 1 
      )
where id is NOT NULL      
), -- t2           
     t3 as (select id, COUNT(*) from t1
             group by id
            
            )
select * 
from t3
 where 1 = 1
   ----and t3.id = 1234656789 ---- !!!!!!!!!!!!!! 400 сек FULL SCAN t1 materialize t1 -- случай 2
;           
Индекс в случае 1 работет, в случае 2 НЕТ, о чем я и спрашивал, "Как заставиь Oracle использовать индекс"

Для тех, кто интересуется правильностью результата, повторю - Меня все устраивает по результатам


Соотношениие - на tab1 приходится в среднем по 20 записей из tab2(история)
Это всеми нами любимый start_of_group, может и не всеми, но на ЭТОМ форуме научили меня НЕУЧА
P.S. Б.я, короли(говён...), спасибо ВАМ, меня выручали и не раз
P.S.S. И откуда вы все это знаете (только не надо посылать на оф. сайт и помойки ненадо - ВАМ спасибо, помогали)
9 ноя 13, 12:29    [15102147]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Десятки миллионов записей
Guest
Я сделал простейший тест-кейс из таблиц на основе all_objects. Селект из вьюхи по id также подхватывает индекс.
Твое хотение вполне соответствует возможности подхвата. Вот прочти Проталкивание условия в представлениях, содержащих аналитические функции, там вполне доступно описано в каких случаях индекс подхватывается, а в каких нет. Ну и само собой пересобери статистику, и покажи план запроса с предикатом извне
9 ноя 13, 14:06    [15102264]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Спасибо, проверим и почитаем, за ссылочку отдельное сп..
9 ноя 13, 14:45    [15102313]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
Десятки миллионов записей,
Ну и зачем кормить то ли троля, то ли неадеквата? Ссылку уже дали :) 15065946 - кликнуть на первый-же результат поиска и попадем на ту-же страничку:) . Просто этот господин не хочет приложить ни малейших усилий для решения своей проблемы (это не только и не столько про вопрос, заданный в топике).
9 ноя 13, 17:18    [15102690]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
ten. я читаю данный форум, и знаю, что ты знающий человек, Тем мне и обиднее тебя нах.й послать.(я уже говорил, сделали из хорошего начинания помойку)
9 ноя 13, 18:00    [15102779]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
ten
Да, сходил по вашей помоешной ссылке, Google я и без вас пользоваться умею(знал бы что искать, не спрашивал бы).
9 ноя 13, 18:10    [15102816]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Десятки миллионов записей
Guest
ten, мне следовало скопирайтить ссылку на номер твоего поста, согласен, дабы не возникло подозрения что нагло воспользовались. Сабж не есть троль. Если и неадекват, то несколько разве что. Для 1973 года - сносно

1973 тебе не следует дерзить. Раз ты пришел с вопросом - будь добр. И раз ты ратуешь о помойности форума - тогда не будь ханжой.
9 ноя 13, 20:11    [15103115]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Прошу закрыть тему
Guest
Всем спасибо за участие
Ответ был получен в конце топика "Вот прочти - Проталкивание условия в представлениях, содержащих аналитические функции" Для меня этого было достаточно.
11 ноя 13, 08:36    [15106717]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Dmitry Gurianov
Member

Откуда:
Сообщений: 651
Занести в палату мер и весов. И в красную книгу.
11 ноя 13, 09:05    [15106803]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Батя!
Guest
Юра, просто никто из них не знает как тебе помочь, вот и издеваются!
11 ноя 13, 18:56    [15111240]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Гость333
Member

Откуда:
Сообщений: 3683
yura1973
1973- это возраст

В днях, судя по всему.
11 ноя 13, 18:57    [15111250]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Я, может был и не прав в постановке задачи, но я никогда не просил её сделать за меня, я просил "пропихните(проталкивание)", мне это интересно.
Кстати, кому интересно, проблема была не в аналитике(прочитал совет от Т.К., не то - я писал, результат один, а время разное), проверял условия, почему и натолкнуло, -- "UNION ALL" - не воспринимает индекс, проверено, что с RN = 1 (работает), что без RN = 1
Т.е. комментирую любой подзапрос в UNION - всё хорошо, оба - нет.
Переписал, через Pivot (rownum <= 2), ну и Where. типа Pivot=1 or (pivot = 2 and rn = 1).
Если кто ссылочку кинет на эту тему, буду благодарен (помойки не нужны, лучше не отвечать)
В принципе, этого я и ждал, думал, может кто сталкивался (а тут такое, кстати, пишу из дома опять же, мне приятно было раньше с вами общаться, задумайтесь админы, хороший же форум был)
12 ноя 13, 21:40    [15118109]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
Батя!
Вы были правы, хотя я никогда не хотел обидеть местных завсегдатаев (Гость, какой-то 3(или 33), к этому не относится).
Вопрос про UNION ALL был задан (на проталкивание (многим не нравится слово - пропихивание, читал, запомнил) индекса по tab1.id, да, по поводу аналитики, тут все хорошо, tab1.id - это колонка из секции PARTITION, как Т.К. пишет в приведенной мне ссылке, это, в принципе, и натолкнуло разбираться дальше, хотя, виноват, посмотрел - да, я не указал этого в начале, но и вы могли дать наводящий вопрос или ссылку на это)
А, если изначально, я что и не договорил, так я и не просил за меня что-то решать, я просил совета - "мордой ткните", в какую сторону копать, или что почитать.
P.S. Да, всем спасибо, остались ещё ЛЮДИ в русских (не толерантно, НАШИХ) селениях.
P.S.1. Пишу из дома (для срамблеров, с работы писать в последнее время не интересно(я говорил об этом)), а тема актуальна (в принципе, я её нашел и решил)(жду ссылку на проблему UNION ALL, может кто сталкивался, с удовольствием почитаю)
15 ноя 13, 20:39    [15139260]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
yura1973
Member [заблокирован]

Откуда:
Сообщений: 60
P.S.2 Вот поэтому, я и спрашивал у Elic-а, знал,тема неординарная, просил помочь (как специалиста по SQL).
Я знаю, вопрос был задан не корректно(но я и не ждал решения, как студент), я ждал наводящих вопросов,
ссылок(не на BIG.ru) (может не прав), хотя всем всё равно спасибо (ten, ты извини, но ты не прав - Хочешь дать совет(ссылку), будь любезен давать её на конкретный сайт, а не на Google (давай я поищу за тебя), там еще понять нужно, что советовал))), извини, если до этого обидел, но ты и сам веди себя умнее, спасибо за понимание)
15 ноя 13, 22:57    [15139678]     Ответить | Цитировать Сообщить модератору
 Re: как заставить Oracle использовать индекс  [new]
Help! Asia
Guest
Показывай планы запросов. С одним юнионом и с двумя.
С твоих слов пока что ясно только что у тебя дома организован фан-клуб твоего кумира, почему в запросе full scan это мало о чем говорит
16 ноя 13, 02:40    [15140516]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Oracle Ответить