Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
ВнизИНДЕКСЫ, ИНДЕКСЫ, ИНДЕКСЫ......... Найти похожие ветки
← →
Sable (2004-02-05 00:50) [0]Друзья мои, разрешите мое заблуждение...
Существует таблица, с кучей полей
Field1
Field2
Field3
Field4
По улсловиям задачи, необходимо организовать быстрый поиск по любому набору полей. Как сделать правильно: создать индексы на все возможные комбинации или один индекс со всеми полями ?
← →
Кщд (2004-02-05 05:40) [1]в такой постановке - на все возможные, т.е. все сочетания без учета порядка
← →
Johnmen (2004-02-05 09:39) [2]Если самое главное "организовать быстрый поиск по любому набору полей", а на остальные отрицательные моменты наплевать, то "на все возможные комбинации". Причем достаточно
Field1,Field2,Field3,Field4,
Field1+Field2,Field1+Field3,Field1+Field4,Field2+Field3,Field2+Field4,Field3+Field4,
Field1+Field2+Field3,Field1+Field2+Field4,Field1+Field3+Field4,Field2+Field3+Field4,
Field1+Field2+Field3+Field4
← →
SasaR (2004-02-05 10:40) [3]Понимаю, что некультурно задавать вопрос в другой ветке, но пусть ответ на него расширит наши горизонты в этой области:
Разве вставка в такую таблицу с такими индексами как в предыдущем примере не будет дико тормозить ? И будет ли IB использовать эти наборы при селекте без явного указания плана ?
← →
Sergey13 (2004-02-05 10:55) [4]2SasaR (05.02.04 10:40) [3]
>не будет дико тормозить ?
Будет. Это как рычаг - выигрываешь в силе, проигрываешь в расстоянии (или как то так 8-). Конкретная конструкция зависит от задачи.
← →
Johnmen (2004-02-05 11:00) [5]>...не будет дико тормозить ?
Тормозить будет. Величина торможения зависит от ряда некоторых условий...
>И будет ли IB использовать эти наборы при селекте без явного указания плана ?
Зависит опять-таки от вида запросов.
← →
Sable_W (2004-02-05 11:11) [6]to Johnmen ©
Ну скажем сдесь запрос такой
Select * from table1
Join table2 on table1.table2id=table2.table2id
join table2 on table1.table3id=table3.table3id
...
join tableX on TableY.TableXid=TableX.TableXid
Where table1.value1=Value1,
table2.value2=Value2,
table3.value3=Value3,
...
tableX.valueY=ValueY
И затевается все для получения набора данных из Table1...
← →
Johnmen (2004-02-05 11:36) [7]>Sable_W (05.02.04 11:11)
Для минимизации скорости выполнения достаточно индексов на
table1.table2id,table2.table2id,
table1.table3id,table3.table3id,
...
TableY.TableXid,TableX.TableXid
и
table1.value1,table2.value2,table3.value3,...,tableX.valueY
← →
Sable_W (2004-02-05 11:41) [8]А если на момент выполнения я не знаю сколько будет параметров... запрос строится и таблицы join"ся когда параметры уже юзверем указаны... И насколько медленно будет проходить вставка ?
← →
Johnmen (2004-02-05 11:54) [9]>А если на момент выполнения я не знаю сколько будет параметров...
... ?
>И насколько медленно будет проходить вставка ?
Я уже говорил, что это зависит от ряда факторов...
Конкретное число раз никто назвать не сможет :)
← →
Sable_W (2004-02-05 11:58) [10]to Johnmen
Я знаю только максимальное число возможных параметров, но большей части из них может и не быть. Запрос создается во время выполнения динамически в ответ на телодвижения юзверя...
Какие могут быть факторы (ну хоть приблизительно...)
← →
Johnmen (2004-02-05 12:02) [11]>Sable_W (05.02.04 11:58)
>Какие могут быть факторы
1. Общее количество индексов
2. Селективность индексов
3. Количество записей в таблице
...
← →
Sable_W (2004-02-05 12:11) [12]to Johnmen
Ну а в моем случае какая может быть панацея? или действительно описывать все и вся ?
← →
Johnmen (2004-02-05 12:14) [13]>Sable_W (05.02.04 12:11)
Не знаю. Т.к. твой случай не знаю...
"панацея" - мифологическое лекарство от всех болезней.
В природе не существует...:)
← →
Sable_W (2004-02-05 12:18) [14]Ок Johnmen, спасибо... :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c