![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
EGD |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.10.2009 Репутация: нет Всего: нет |
Имеется таблица в которой поле id_doc может хранить ссылку на другую запись в этой же таблице (id_doc = id_dog). id_dog - первичный ключ.
Данные из таблицы выбираются через connect by. Что-то вроде
Вопрос: какой индекс нужно создать (какие подсказки оптимизатора указать), чтобы оракл применял индекс для выборки данных. Проверка использования индекса выполняется в PL/SQL Developer в Explain Plan. Это сообщение отредактировал(а) EGD - 16.4.2011, 22:05 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Ваш запрос - херня.
никогда не вернет истину рекурсивная петля емнип, в деревяхах не всегда можно верить плану. Я припоминаю случаи, когда план показывает фулскан, а на деле его и нет. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
EGD |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.10.2009 Репутация: нет Всего: нет |
IS NULL конечно же, но это сейчас не важно.
Истина!
Запрос в истинной его форме работает как от него требуется. Вопрос стоит в ускорении выборки данных подобным запросом. Есть идеи? |
||||||
|
|||||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
все равно не вернет истину Как оптимизировать не работающий запрос? Или как оптимизировать сферический запрос в вакууме? Нет. Идей нет. ЗЫ id_doc и id_dog это опечатка и одно поле или все таки действительно разные? Это сообщение отредактировал(а) Zloxa - 15.4.2011, 22:25 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
EGD |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.10.2009 Репутация: нет Всего: нет |
не поверите! оно работает. корнем иерархии ставятся записи с пустым полем id_dog.
как ускорить иерархические выбоки данных (какой индекс нужно создать).
разные, я же написал вначале, что запись может ссылаться на запись предка в этой же таблице. id_doc - id_dog родителя. |
||||||
|
|||||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Тогда я не поверю что id_dog - первичный ключ По существу - индекс по id_doc может позволить быстро искать строить иерархию. Предикат id_dog is null не сможет использовать индекс, потому корни по любому будут отбираться фуллсканом. Может помочь трюк с составным индексом по (id_dog,любое_not_null_поле). В этом случае, может статься что подтянется индекс для предиката id_dog is null. Зависит, конечно, от селективности. Но я не припомню, чтобы этот трюк был где-то описан, потому исползовать его поостерегся бы для тиражных решений. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
EGD |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.10.2009 Репутация: нет Всего: нет |
/me посыпает голову пеплом
Прошу прощения. id_dog - первичный ключ, корень собирается по id_doc is null. Вы правы. пробовал делать индекс по id_dog,id_doc, но Eplain Plan все равно показывал full scan. попробую создать для id_doc и сделать AND_EQUAL по ключу и новому индексу. Это сообщение отредактировал(а) EGD - 16.4.2011, 22:06 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |