![]() |
|
Модераторы: LSD |
![]()
|
|
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: нет Всего: 31 |
Всем привет!
Может кто-нибудь объяснить как работают составные индексы ? (ограничимся B-TREE) Можно кинуть в меня ссылкой на умную статью где это написано.. Я вполне понимаю как работает индекс по одному полю в таблице, но не понимаю как работает составной. Ну для примера есть таблица: aTable --------- id filed_a filed_b filed_c пусть у нас есть индекс по полям filed_b и filed_c. понятно, что такой индекс обеспечивает быстрый доступ к данным по заданным полям field_a и filed_b. а что если задано только filed_a или только filed_b ? Или такие вещи зависят от реализации БД ? |
|||
|
||||
| aleksh |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 2 Всего: 13 |
а в чем, собственно, непонятка? ну будет указана филд_а и выдастса филд_а, ну будет она шустрить дольше если индексов много, так никто и не обещал работу в минимум тактов, тут фишки в другом накручены. зато такие индексы упрощают контроль уникальности, и если пары часто встречаются то таки выдаются быстрее, но это уже тонкости реализации конкретной бд под конкретную задачу.
Добавлено через 1 минуту и 54 секунды
надеюсь опечатка |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: нет Всего: 31 |
Уважаемый aleksh, я имел ввиду "как устроены составные индексы" .
как это выглядит снаружи - я знаю. поддержка уникальности - не имеет значения |
|||
|
||||
| ravnur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
sir_nuf_nuf, это зависит от конкретной бд.
на примере оракла (9i) могу сказать, то лучший способ узнать используется ли индекс - посмотреть план исполнения запроса. в частности, кайт пишет, что если есть ключ pk(a,b), то при запросе select * from table where b = 1 индекс скорее всего использоваться не будет, а при ситуации select a, b from table where b = 1 будет. можно принудительно заставить оптимизатор использовать индекс, но далеко не факт, что это поможет. |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |