powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Можно ли прописать ручками какой нужно взять индекс ???
12 сообщений из 12, страница 1 из 1
Можно ли прописать ручками какой нужно взять индекс ???
    #32181641
UseIndex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собсно сабж :)
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32182583
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Есть такая штука директивы оптимизатору.

select {+index TABLENAME INDEXNAME} * from TABLENAME

Но, в принципе это не нужно, иногда опасно. Стандарт СКУЛЬ этого вроде не поддерживает.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32183213
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
А про "опасно" можно подробнее?
Я этим активно пользуюсь в ХП.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184237
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
А про  "опасно"  можно подробнее?
Я этим активно пользуюсь в ХП.

Предположим соединяются 2 таблицы, ты пропишешь индекс одной из таблиц, распределение кардинально изменится, и оптимальным планом станет план с другим индексом, а информикс будет ходить по старому (рекомендованному). Ественно для продвинутого DBA, который рубит оптимизатор, и знает как растут данные (изменяется распределение) никакой опасности нет.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184325
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Понятно ;-)
Я естествено учитываю селективность индексов.
Кстати с ХП несколько раз нарывался на ситуацию, когда нормально работающая в течении продолжительного времени процедура вдруг начинала тормозить. Это убиралось пересозданием ХП или перестройкой ее статистики, но в дальнейшем опять повторялось. Вылечить это удалось только директивами оптимизатора.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184473
UseIndex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы уточнить а на какой версии Informix-а это возможно?
У меня 7.31.UC5 и он мне в експлейне говорит :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
QUERY:
 ------
 
select {+index account 145_740} *
from account
where currency =  840 


DIRECTIVES FOLLOWED: 
DIRECTIVES NOT FOLLOWED: 
Estimated Cost:  97 
Estimated # of Rows Returned:  757 

 1 ) informix.account: INDEX PATH

    ( 1 ) Index Keys: currency 
        Lower Index Filter: informix.account.currency =  840  

145_740 индекс по полю "currency" таблицы account
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184529
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хаха. У автоиндекса первый символ пробел!!!

Делай так.
select {+index account " 145_740"} *

PS: Мы не делаем автоиндексы. Всегда создаем вручную.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184783
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
я все же думаю что должны быть еще скобки

этот запрос принимает директиву,
set explain on;
select /*+index (rate rate1)*/ *
from rate
where currency == '810'
and dateop == '01.01.2003'


а этот нет
set explain on;
select /*+index rate rate1*/ *
from rate
where currency == '810'
and dateop == '01.01.2003'
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32184905
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да скобки должны быть. Писал по памяти, описался.

Вообще я думаю что товарищу надо совсем не это. Ему бы статистику собрать. А не парится с директивами.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32185445
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
ХЗ

Я лично статистику в своей БД не собираю, тк на это нужно часов 10 или более.
Рано или поздно при приличных объемах придется ручками оптимизацию проводить.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32185558
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я лично статистику в своей БД не собираю
Ну и зря.

тк на это нужно часов 10 или более.
Можно не каждый день, и не по всей таблице (RTFM).

Рано или поздно при приличных объемах придется ручками оптимизацию проводить.
Головой надо работать, а не руками.
...
Рейтинг: 0 / 0
Можно ли прописать ручками какой нужно взять индекс ???
    #32185978
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Лично мое мнение - если характеристики распределения практически не меняются, то ни к чему статистику собирать. Разве что для того чтобы процессоры загрузить.

Правильно подобрать директиву - как раз и есть работа головой.
В ситуации, когда я завишу от оптимизатора INFORMIX мне совсем не улыбается собирать статистику и ждать чуда. К тому же при моих объемах данных ошибка оптимизатора может увеличить время формирования отчета например с минуты до многих часов. Тем более, что лично мне приходилось натыкаться на ситуации, когда оптимизатор при собранной статистике выбирал намного более дорогостоящий путь.

Если бы оптимизатор всегда решал задачу идеально, то set explain был бы не нужен.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Можно ли прописать ручками какой нужно взять индекс ???
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]