CftClub.ru
Клуб специалистов ЦФТ-Банк

select

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеПт Июл 03, 2015 16:58   select Ответить с цитатой
Полезность: Нет оценки
Товарищи, подскажите при обращении к ibs.objects, если посмотреть план - орыкл смотрит чуть не все таблицы? Это при том, что обращаюсь по ID

Код:
 select * from ibs.objects where id = 77541085012


можно ли с помощью какого-нибудь хинта получить значение быстро, не заставляя его проверять этот ID в каждой таблице?
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПт Июл 03, 2015 20:18    Ответить с цитатой
Полезность: Нет оценки
1. там же INDEX UNIQUE SCAN по всем таблицам, куда же быстрее?

2. ежели вы знаете тип того id, то добавьте это условие. Например:

Код:
and class_id = 'ABBREVIATION'
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПн Июл 06, 2015 07:15    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
1. там же INDEX UNIQUE SCAN по всем таблицам, куда же быстрее?

2. ежели вы знаете тип того id, то добавьте это условие. Например:

Код:
and class_id = 'ABBREVIATION'

ежели известен class_id, смысл тогда искать в этой вьюшке?

Ах, как жаль, что идентификатор не состоит из комбинации class_id:id...
wolfio пишет:
Товарищи, подскажите при обращении к ibs.objects, если посмотреть план - орыкл смотрит чуть не все таблицы? Это при том, что обращаюсь по ID

Не "чуть ли не все", а именно - все.
Это представление состоит из запросов, объединённых по union all по всем таблицам модели данных.

wolfio пишет:
Код:
 select * from ibs.objects where id = 77541085012


можно ли с помощью какого-нибудь хинта получить значение быстро, не заставляя его проверять этот ID в каждой таблице?

низзя.
При чём тут вообще хинты? в каждой из таблиц Oracle пользует самый эффективный индекс, но проблема в том, что таблиц много - это ж union all.

А зачем нужно дёргать эту вьюшку? На моей практике в коде всегда получалось этого избежать.
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеПн Июл 06, 2015 09:04    Ответить с цитатой
Полезность: Нет оценки
Цитата:
А зачем нужно дёргать эту вьюшку? На моей практике в коде всегда получалось этого избежать.

исключительно в целях сопровождения. иногда получаешь ошибку в какой-нибудь операции, с IDшником, и не знаешь от чего он.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеВт Июл 07, 2015 06:43    Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Ах, как жаль, что идентификатор не состоит из комбинации class_id:id...

Привет, Рандомчик...
в 1с-ке идентификатор составной.
Только зашито 4 значения: {Документ|Справочник|...}{ВидДокумента|ВидСправочника}{N узла для репликации}{ид}...
это 'на всякий случай' - ежель с нуля проектировать систему кто-нить будет...
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Июл 20, 2015 03:14    Ответить с цитатой
Полезность: Нет оценки
А там id разве не строковый ?
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеСр Июл 22, 2015 07:47    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
А там id разве не строковый ?

строковый - вот в этой строке все и зашито.
информации в инете много, например тут
http://www.script-coding.com/v77tables.html#1.1.1.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Июл 22, 2015 11:02    Ответить с цитатой
Полезность: Нет оценки
Да не я к тому , что может явно надо было строку искать, с апострофами
select * from ibs.objects where id = '77541085012' ?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Июл 23, 2015 07:21    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Да не я к тому , что может явно надо было строку искать, с апострофами
select * from ibs.objects where id = '77541085012' ?


objects - прекрасное представление. Прекрасное в том смысле, что бесподобно иллюстрирует, к чему приводит бездумное увлечение union all.

Я его иногда для этого использую.

Что касается кавычек - не думаю, что они тут уместны, и вот почему:
Код:
select * from user_tab_cols where table_name = 'OBJECTS'

TABLE_NAME...COLUMN_NAME...DATA_TYPE
OBJECTS..........ID.......................NUMBER
OBJECTS..........CLASS_ID...........VARCHAR2
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru