![]() |
|
Модераторы: Akella |
![]()
|
|
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Доброго времени суток!
СУБД - FireBird 2.1. В БД (помимо всего прочего) есть три таблицы со сходной структурой:
Где Х, Y - координаты (на всякий случай). Таблицы заполняються однажды! В процесе эксплуатации БД, в 99% запросов будет осуществлен поиск одного поля в которое входит определенная точка. Т.е. просмотр всех четырех значений координат. Объемы таблиц: 1 ~600 записей 2 ~100К записей 3 ~6М записей Вопрос: Можно ли (и нужно ли) организовывать индексы по всем четырем значениям координат? Т.е. не будет ли от этого хуже (я часто в И-нете натыкаюсь на высказываения о том, что чрезмерное использование индексов ухудшает быстродействие)? -------------------- Слава Україні! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
индексы нужно организовывать только по тем полям, по которым будет производится поиск или сортировка. Думаю, что если в таблице 600 записей, то индекс может и не понадобится.
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Меня просто смущает, тот факт, что из шести столбцов для таблицы объемом ~6М: 1 индекс - т.к. первичный ключ; 2 индекс - т.к. внешний ключ; 3-6 индексы - т.к. по этим полям будет осуществляться поиск. Итого на 6 столбцов - 6 индексов. Это нормально? Серверу не поплохеет -------------------- Слава Україні! |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Gluttton, если в поиске учавствуют всегда 2 поля (X и Y), то можно сделать один составной вместо 2.
1. Частая вставка/изменение данных - перестройка индекса + периодический сбор статистики для актуализации индекса. 2. Использование неэффективного индекса (например: пол работника). Чем ближе индекс к уникальному тем лучше. Если у тебя первый пункт не предвидится, то и проблем не будет, почти. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Сказывается усталость - час не мог понять зачем в БД хранить данные о половине работника
А и не знал, что так можно, спасибо за идею - буду пробовать!
1-го не предвидиться. 2-ое условие тоже в общем выполняется (но вот комбинации X_S, Y_S и X_F, Y_F вообще уникальны). -------------------- Слава Україні! |
||||||
|
|||||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
главное чтобы порядок полей в индексе и в where был одинаковый
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Будет иметь значение, что используется в условии where: and или or. Возможно придётся делать один составной индекс, и два раздельных. Добавлено через 1 минуту и 32 секунды После заполнения пересчитывай статистику индексов. |
|||
|
||||
| Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Поразмыслив над предложеным, взяв во внимание, что поиск в запросе осуществляется так:
Создал вот такой индекс:
Результат превзошел все мои ожидаения Akella и Deniz заслужено получают +1 за практический совет! Спасибо! -------------------- Слава Україні! |
||||
|
|||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |