Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Индексы на ключи / 25 сообщений из 61, страница 1 из 3
11.08.2006, 14:09
    #33913299
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
День добрый!

Насколько я понял из наблюдений за сервером и чтения форума (я с Информиксом совсем недавно) - он автоматически строит индексы на ключи (первичные и внешние). Соответственно у меня несколько вопросов:
1. Индекс на первичный ключ (по умолчанию) - некластерный. Можно такое поведение как-то изменить?
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?
...
Рейтинг: 0 / 0
11.08.2006, 14:46
    #33913439
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений Фадеев
Насколько я понял из наблюдений за сервером и чтения форума (я с Информиксом совсем недавно) - он автоматически строит индексы на ключи (первичные и внешние). Если такого индекса нет, то он строит сам, а если есть -- то его и пользует.


Евгений Фадеев
1. Индекс на первичный ключ (по умолчанию) - некластерный. Можно такое поведение как-то изменить?Создать самому? Но два момента: записи таблицы упорядоченными по индексу будут только в момент постройки индекса, далее из-за DML операций они таковыми уже не будут, и самое главное это нафиг не надо.


Евгений Фадеев2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?Выбросить нельзя. Такие индексы (на внешние ключи) он использовать будет, например при удалении из справочника, при соединении со справочником. Зачем их не использовать? Зачем хинты?
...
Рейтинг: 0 / 0
11.08.2006, 14:52
    #33913466
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений ФадеевДень добрый!

Насколько я понял из наблюдений за сервером и чтения форума (я с Информиксом совсем недавно) - он автоматически строит индексы на ключи (первичные и внешние). Соответственно у меня несколько вопросов:
1. Индекс на первичный ключ (по умолчанию) - некластерный. Можно такое поведение как-то изменить?
Создайте индекс раньше, чем первичный ключ.
Еще есть оператор alter index
Евгений Фадеев
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?
Внешнего ключа без индекса не бывает.
Использовать индекс или нет, решает оптимизатор.
Почему вы думаете, что индекс вам помешает?
...
Рейтинг: 0 / 0
11.08.2006, 14:52
    #33913470
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений ФадеевДень добрый!

Насколько я понял из наблюдений за сервером и чтения форума (я с Информиксом совсем недавно) - он автоматически строит индексы на ключи (первичные и внешние). Соответственно у меня несколько вопросов:
1. Индекс на первичный ключ (по умолчанию) - некластерный. Можно такое поведение как-то изменить?



Можно, нужно построить уникальный кластерный индекс а потом
создавать ПК. В этом случае сервер будет пользоваться индексом построенным заранее.

Евгений Фадеев
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?

Нельзя.

Для FK индекс нужен по обьективным причинам
1. По полям PK=FK очень часто делается join.
2. Проверка целостности. При попытке удаления PK записи поверка
наналичие FK записи производится по индексу.
3. Каскадное удаление.

Не понимаю в чем может быть выигрыш от отсутствия индекса под FK?
и зачем может пондобится давить FK индекс хинтами ?

Может лучше вообще не строить FK если он мешает?
...
Рейтинг: 0 / 0
11.08.2006, 14:59
    #33913500
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Итого в сухом остатке:
1. С первичными ключами понятно. Забиваем.
2. Индексы на внешние ключи. Вопрос на засыпку: всегда ли наличие индекса ускоряет SELECT?
3. (to onstat-) Внешние ключи нужны не для ускорения чего бы то ни было, а для определения ограничений в рамках схемы.
...
Рейтинг: 0 / 0
11.08.2006, 15:01
    #33913507
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
ЗЫЖ Целостность можно поддерживать с помощью триггеров и check констрейнтов, тогда индексы можно не делать.
С помощью триггеров можно много чего интересного наделать, например в качестве pk сделать поле(я) вьюхи (таблицы из другой бд).
...
Рейтинг: 0 / 0
11.08.2006, 15:06
    #33913524
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений Фадеев
2. Индексы на внешние ключи. Вопрос на засыпку: всегда ли наличие индекса ускоряет SELECT?Всегда. Оптимизатор решает использовать или нет.
Всегда замедляют insert.
Всегда ускоряют update, delete (в смысле когда фильтр нормальный, информикс -- блокировщик).


На каждое всегда естественно найдутся исключения, но писать лень.
...
Рейтинг: 0 / 0
11.08.2006, 16:08
    #33913744
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Журавлев ДенисВсегда. Оптимизатор решает использовать или нет.То есть сервер их строит всегда, а потом оптимизатор мучается выбором? :)
Журавлев ДенисВсегда замедляют insert.Это понятно.
Журавлев ДенисВсегда ускоряют update, delete (в смысле когда фильтр нормальный, информикс -- блокировщик).А если происходит UPDATE индексированного поля?
...
Рейтинг: 0 / 0
11.08.2006, 16:16
    #33913777
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Журавлев ДенисЗЫЖ Целостность можно поддерживать с помощью триггеров и check констрейнтов, тогда индексы можно не делать.Да все можно - зачем только? Если все тоже самое можно делать гораздо проще, нагляднее, быстрее и дешевле?!
Журавлев ДенисС помощью триггеров можно много чего интересного наделать, например в качестве pk сделать поле(я) вьюхи (таблицы из другой бд).Стоя на лыжах в гамаке? :)
...
Рейтинг: 0 / 0
11.08.2006, 16:22
    #33913794
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений ФадеевТо есть сервер их строит всегда, а потом оптимизатор мучается выбором? :)Ага, он комсомолец.

Евгений Фадеев
Это понятно.Я рад.


Евгений ФадеевА если происходит UPDATE индексированного поля?А если delete? В общем зачем я вам объясняю если вы и так все знаете.
...
Рейтинг: 0 / 0
11.08.2006, 16:26
    #33913809
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Журавлев ДенисВ общем зачем я вам объясняю если вы и так все знаете.:)) Я не все знаю. Я про Информикс - совсем мало. Я с ним всего пару месяцев сожительствую.

На самом деле за ответы спасибо. Мне они были нужны.
...
Рейтинг: 0 / 0
11.08.2006, 16:34
    #33913843
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений ФадеевДа все можно - зачем только? Если все тоже самое можно делать гораздо проще, нагляднее, быстрее и дешевле?!Ага, сегодня тяпница, будем развлекатся. Erwin раньше так генерировал триггера -- ух, только батоны жми, писофкейк.
Очень напрягал меня информикс автоиндексами в ситуации: таблица 200 млн. записей, есть мой индекс (fk, f1), а он пративный еще избыточный (fk) хочет.

Поработав с информиксом 2 года я понял что создавать несколько бд в одном инстансе -- идиотия, и лишний геморрой.

Был случай: бд 400 таблиц, две таблицы с естественными ключами, остальные сурогаты, конечно естественный ключ пришлось изменить, добавить поле и исключить уникальность, для того чтоб старый код хоть как-нибудь работал, таблицу переименовали, создали вью (с именем ляля_tbl -- гыгы), изображающее из себя старую таблицу, и целостность поддерживать триггерами выполняя селекты на вью.
...
Рейтинг: 0 / 0
11.08.2006, 16:45
    #33913872
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений Фадеев
3. (to onstat-) Внешние ключи нужны не для ускорения чего бы то ни было, а для определения ограничений в рамках схемы.

Я и об этом написал

onstat-
2. Проверка целостности. При попытке удаления PK записи поверка
наналичие FK записи производится по индексу.


Другие базы данных могут проверять по таблице(данным),
но Infromix проверку FK делает именно по индексу.
...
Рейтинг: 0 / 0
11.08.2006, 16:56
    #33913917
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
onstat- Евгений Фадеев
3. (to onstat-) Внешние ключи нужны не для ускорения чего бы то ни было, а для определения ограничений в рамках схемы.

Я и об этом написал
Я это к тому что
onstat-Может лучше вообще не строить FK если он мешает?Ну и (если начать придираться, чего делать не хочется) - ключ не строится, а объявляется.
...
Рейтинг: 0 / 0
11.08.2006, 17:14
    #33913974
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Тяпничное: Поработав два года с ораклом я понял какое счастье, что в информиксе по умолчанию планы запросов не шарятся между сессиями и для каждого курсора строятся заново.
...
Рейтинг: 0 / 0
11.08.2006, 17:18
    #33913990
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Журавлев ДенисТяпничное: Поработав два года с ораклом я понял какое счастье, что в информиксе по умолчанию планы запросов не шарятся между сессиями и для каждого курсора строятся заново.Э... А в чем счастье-то?
...
Рейтинг: 0 / 0
11.08.2006, 18:27
    #33914157
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений Фадеев onstat- Евгений Фадеев
3. (to onstat-) Внешние ключи нужны не для ускорения чего бы то ни было, а для определения ограничений в рамках схемы.

Я и об этом написал
Я это к тому что
onstat-Может лучше вообще не строить FK если он мешает?Ну и (если начать придираться, чего делать не хочется) - ключ не строится, а объявляется.

Ну если быть окончательно педантичным то не ключ,
а ограничение добавляется
(alter table ...... add constraint ......).

Я прошу прощения за то, что нечаянно ввел Вас в заблуждение некорректным переводом(интерпретацией).

Я не собирался придираться,
мне просто интересно чем в данном случае

Евгений Фадеев
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?


мешает индекс на FK?
...
Рейтинг: 0 / 0
11.08.2006, 19:47
    #33914278
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Евгений ФадеевЭ... А в чем счастье-то?Гыгыыгы. В том.
...
Рейтинг: 0 / 0
28.08.2006, 19:59
    #33948023
Vladimir Sher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Для Фадеева OFFTOPIC: Как дела на новом месте? Пиши на мыло sher хороший человек terlis точка ru.
...
Рейтинг: 0 / 0
30.08.2006, 19:12
    #33953710
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Журавлев Денис Евгений Фадеев
2. Индексы на внешние ключи. Вопрос на засыпку: всегда ли наличие индекса ускоряет SELECT?Всегда. Оптимизатор решает использовать или нет.

Не соглашусь. К тому же и оптимизатор не всегда такой умный, как хотелось бы.
Журавлев ДенисНа каждое всегда естественно найдутся исключения, но писать лень.
В том то и дело, что эти исключения иногда играют большое значение и вполне понятно желание Евгения управлять возможностями. Как и в случае с автоматическим построением индексов для внешних ключей (как, например, у Оракла, когда автоматом не строится). Но все же, если сравнивать в общем, то я бы все таки оставил принудительное построение индексов, т.к. это намного лучше, чем когда люди вообще не строят индексы на ключах (видел пару раз такие промышленные БД на Оракле, когда у заказчика через несколько месяцев эксплуатации "вдруг" все начинало жутко тормозить, а у разработчика на малых объемах летало).
...
Рейтинг: 0 / 0
30.08.2006, 19:39
    #33953765
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Тан Евгений Фадеев
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?
Почему вы думаете, что индекс вам помешает?
Пример такого "мешающего" индекса - автоиндекс на ключ "пол", где всего два значения М и Ж. Надо доказывать неэффективность такого индекса ?
...
Рейтинг: 0 / 0
30.08.2006, 21:23
    #33953884
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
vasilisПример такого "мешающего" индекса - автоиндекс на ключ "пол", где всего два значения М и Ж. Надо доказывать неэффективность такого индекса ?
А можно?
...
Рейтинг: 0 / 0
31.08.2006, 08:46
    #33954311
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
vasilisвсего два значения М и Ж. А что так мало ? Обычно 3, иногда 5.
...
Рейтинг: 0 / 0
31.08.2006, 10:15
    #33954520
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
vasilis Тан Евгений Фадеев
2. Можно ли выбросить некоторые индексы на внешние ключи (например в ситуации, когда таблица длиной в несколько десятков миллионов записей ссылается на таблицу длиной в десяток записей)? Или с этим нужно жить (либо он сам такие индексы пользовать не будет, либо ему нужно хинтами это задавать)?
Почему вы думаете, что индекс вам помешает?
Пример такого "мешающего" индекса - автоиндекс на ключ "пол", где всего два значения М и Ж. Надо доказывать неэффективность такого индекса ?
А это зависит от распределения данных.
И если согласно распределению индекс не эффективен, тогда он не будет использоватся оптимизатором.
Зато без индекса большой проблемой будут попытки изменить значения ключа в главной таблице. Или записи из нее удалить.
...
Рейтинг: 0 / 0
31.08.2006, 11:22
    #33954771
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы на ключи
Тан
А это зависит от распределения данных.
И если согласно распределению индекс не эффективен, тогда он не будет использоватся оптимизатором.
Индексы на таблицы размером меньше одной страницы почти никогда не используются, хотя можно попробовать что будет если все поля таблицы в индекс включить.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Индексы на ключи / 25 сообщений из 61, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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