построение индексов на таблице

  • Автор темы Автор темы Dez
  • Дата начала Дата начала

Dez

Новичок
построение индексов на таблице

Привет. Давно разбирал, хочу уточнить.
Имеется таблица:
a1 b2 c3 d4 sum
.................................

имею первичный ключ: a1 b2 c3 d4.
Вопросы:
1) Это означает, что на таблице уже существуют также индексы:

a1 b2 c3
a1 b2
a1

?
2) Если в выборке не участвует a1 это означает, что мои индексы - по барабану и надо строить еще например: b2 c3 d4 ?
 
Это означает, что на таблице уже существуют также индексы:
Нет, не означает - индекс всего один. Но для последовательностей a1+b2, a1, a1+b2+c3 этот индекс будет использоваться (тут есть оговорки, но в некоем приближении именно так)

2. Да, означает.
 
prolis
нельзя. условие типа range не позволяет искать по частям индекса правее.

т.е. если есть индекс a+b+c+d, то при условии
a = 1 AND b > 10 AND c = 3 AND d = 4
будет использоваться только часть a+b

ну и чтобы соблюсти регламент: http://dev.mysql.com/doc/refman/5.1/en/range-optimization.html
 
FB3
коротко: нет

длинно:
An interval can be used as long as it is possible to determine a single key tuple containing all rows that match the condition

плюс почитай примеры вокруг этой фразы.
 
Если немного упростить, то можно представить себе вот типа такую записную книжку, только в которой дальше есть такие же закладки по второй букве, третьей и так далее - это как раз индекс. И подумать, в каких случаях это поможет :)
 
fixxxer
Угу, когда разговор заходит в тупик и приходится объяснять на пальцах - аналогично рассказываю о записной книжке, отсортированной по Фамилия+Имя ))
 
А я в другой тупик зашел. :( . Пытаться выяснять связи между данными в БД. Программист мол предыдущий свалил и записей не оставил ...
Смотрю мой единственный первичный ключ не удобен.
Там есть таблица продаж(firebird база):
pole1 pole2 pole3 ..... summa
полей штук 20, и на таблице нет первичного ключа и от каких полей зависит сумма - не ясно. Многие поля имеют null - значения и дублируют друг друга.
В самой той базе сделано элементарно просто - индекс на каждый столбик.
Может мне тоже так сделать - для подсчета запросов - это же нормальный вариант?

Такое впечатление, что таблица - это мультимножество просто записей о продажах. Что то ввели что то не ввели в некоторые поля - данные все равно попадают в таблицу продаж. И по ней потом организуются многообразные отчеты.
 
Автор оригинала: Dez
Такое впечатление, что таблица - это мультимножество просто записей о продажах.
Находишь, где в интерфейсе работы с базой добавляются/редактируются эти данные о продажах. Потом смотришь код этого интерфейса, там и будет сопостовление полей.
 
программа на delphi, доступа к исходникам нет. У меня во всяком случае. Да и ввода я в этой программе не вижу - может в другой вводят, а в этой - отчеты.
 
Телепатство. Осталась надежда на понятное наименование полей (не pole1 pole2 pole3). Ну и запустить осознанный отчет в программе, монитором посмотреть отосланный SQL и посмотреть, что он считает в зависимости от отчета.
 
Я вообще то про индексы спрашивал. Если ставить на каждое поле в таблице. Остальное - решаемое.

Уже сделал себе такие индексы. По скорости ухудшений не заметил.
 
Конечно ты не заметил, ты отчеты запускаешь. А те системы, которые импортят продажи в эту базу теперь повесились.
 
Автор оригинала: prolis
Конечно ты не заметил, ты отчеты запускаешь. А те системы, которые импортят продажи в эту базу теперь повесились.
prolis , не чего сказать - так зачем же трепаться ни о чем - невежество свое показывать? ;)
Телепат блин, какие то импортирующие системы досочинял .... Учитесь читать вопросы - о том что спрашивают.
 
Автор оригинала: Dez
программа на delphi, доступа к исходникам нет. У меня во всяком случае. Да и ввода я в этой программе не вижу - может в другой вводят, а в этой - отчеты.
-уличная магия, данные сами там появляются
 
Сверху