Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.03;
Скачать: CL | DM;

Вниз

ИНДЕКСЫ, ИНДЕКСЫ, ИНДЕКСЫ.........   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-6076
Santra
2004-02-20 20:18
2004.03.03
Переход фокуса к чужому приложения?


1-6051
Berezne
2004-02-17 17:51
2004.03.03
Правильное отображение дати


1-6069
Гиричев Руслан
2004-02-21 18:09
2004.03.03
Как вернуться в прошлое?


1-6052
Курдль
2004-02-18 18:10
2004.03.03
Обнаружена ошибка в TImage! (Или в моей дезоксирибонуклеиновой)


1-6017
GogaStar
2004-02-19 12:21
2004.03.03
Как отловить нажатие клавиши...