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

select {+index TABLENAME INDEXNAME} * from TABLENAME

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

Предположим соединяются 2 таблицы, ты пропишешь индекс одной из таблиц, распределение кардинально изменится, и оптимальным планом станет план с другим индексом, а информикс будет ходить по старому (рекомендованному). Ественно для продвинутого DBA, который рубит оптимизатор, и знает как растут данные (изменяется распределение) никакой опасности нет.
...
Рейтинг: 0 / 0
17.06.2003, 14:31
    #32184325
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли прописать ручками какой нужно взять индекс ???
Понятно ;-)
Я естествено учитываю селективность индексов.
Кстати с ХП несколько раз нарывался на ситуацию, когда нормально работающая в течении продолжительного времени процедура вдруг начинала тормозить. Это убиралось пересозданием ХП или перестройкой ее статистики, но в дальнейшем опять повторялось. Вылечить это удалось только директивами оптимизатора.
...
Рейтинг: 0 / 0
17.06.2003, 16:07
    #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
17.06.2003, 16:38
    #32184529
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли прописать ручками какой нужно взять индекс ???
хаха. У автоиндекса первый символ пробел!!!

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

PS: Мы не делаем автоиндексы. Всегда создаем вручную.
...
Рейтинг: 0 / 0
17.06.2003, 20:33
    #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
18.06.2003, 08:58
    #32184905
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли прописать ручками какой нужно взять индекс ???
Да скобки должны быть. Писал по памяти, описался.

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

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

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

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

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

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


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