Вопрос по индексу.

denis_viktorovich
Дата: 03.10.2005 12:49:40
Доброго времени суток. Кто нибудь подскажет что можно почитать
про оптимизацию запросов в Interbase 5.5. интересует посмотреть например используется ли индекс в данном запросе или идет перебор всех записей?
srf2000
Дата: 03.10.2005 12:52:57
denis_viktorovich
Доброго времени суток. Кто нибудь подскажет что можно почитать
про оптимизацию запросов в Interbase 5.5. интересует посмотреть например используется ли индекс в данном запросе или идет перебор всех записей?


сейчас тебя будут пинать
Di_LIne
Дата: 03.10.2005 13:08:41
denis_viktorovich
Interbase 5.5.

- Пинать будют крепко!
Именно за устаревшую версию.
Мимопроходящий
Дата: 03.10.2005 13:14:39

Привет, Di_LIne!
Ты пишешь:

Di_LIne
DL> - Пинать будют крепко!
DL> Именно за устаревшую версию.
Не за устаревшую, а за горбатую.
Некоторые конторы до сих пор пользуют 5.6
Но юзать 5.5 нельзя!
Подробности на http://ibase.ru в ФАКе.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

Di_LIne
Дата: 03.10.2005 13:21:54
Мимопроходящий

Привет, Di_LIne!
Ты пишешь:

Di_LIne
DL> - Пинать будют крепко!
DL> Именно за устаревшую версию.
Не за устаревшую, а за горбатую.
Некоторые конторы до сих пор пользуют 5.6
Но юзать 5.5 нельзя!
Подробности на http://ibase.ru в ФАКе.

--
With best regards, Мимопроходящий.

- Йес, Сэр!
denis_viktorovich
Дата: 03.10.2005 14:31:09
1. Там изначально была 5.5. Потом ставили кажется некий апдейт, потом обновляли до 5.6. Были еще проблемы с превышением базой размера 2 Гб.
Но собственно меня пинать абсолютно бесперспективно ибо я не администратор и не разработчик этого приложения. Приложение старое, покупное данная его версия уже не поддерживается разработчиком (но продолжает жить и главное расти). Вернее оно поддерживается в смысле - покупайте новую версию, там может уже все исправлено. Однако это решаю не я и похоже обновления не будет.

2. Мне приходится брать данные из одной "функции" данного приложения. Эта функция работала всегда нечеловечески медленно. Я както пробовал разобраться, с помощю SQLMonitor запрос изловил который тормозит. А потом забросил это дело (отчасти потому, что очередной раз попинали на этом форуме).

3. Теперь уж совсем медленно стало. Я раскопал этот запрос и похоже понял, почему он так тормозит. Нет индекса по полю учавствующему в where in().
Даже смешно - если из приложения запрашиваются все данные то открывается несколько минут (5-7). Если фильтруется по цеху и возвращает раза в три меньше данных - то запрос работает ТРИ-ЧЕТЫРЕ часа и при этом грузит сервер на 100%. Причем грузит хоть тестовый хоть рабочий именно под 100%.

Я почему спрашиваю именно "что почитать доходчиво в электронном виде". У нас стандартно используется MS SQL или Oracle. IB Никто не знает (в т.ч. и я).
Amris Mirddin
Дата: 03.10.2005 15:25:21
denis_viktorovich

3. Теперь уж совсем медленно стало. Я раскопал этот запрос и похоже понял, почему он так тормозит. Нет индекса по полю учавствующему в where in().
Даже смешно - если из приложения запрашиваются все данные то открывается несколько минут (5-7). Если фильтруется по цеху и возвращает раза в три меньше данных - то запрос работает ТРИ-ЧЕТЫРЕ часа и при этом грузит сервер на 100%. Причем грузит хоть тестовый хоть рабочий именно под 100%.


Вообще-то такая ситуация наводит на прямо противоположные мысли - использование индекса в условии с in (...). Для каждого значения в списке поднимается свой экземпляр индекса и, начиная с некоторой длины списка, натурал начинает становиться предпочтительным. С какой именно - зависит от очень и очень многих факторов. Хотя возможно и другое - при наложении условия меняется план запроса в принципе, то есть последовательность перебора страниц. В дистрибуте IB меньше 6.0 есть такая утилитка - WISQL, которая умеет показывать планы выполняемых ею запросов. Имхо IBExpert просто обязан уметь коннектиться к 5.х. и он в этом плане предпочтителен - умеет показывать план как запрос выполняться будет, без фетча результатов. На плохом запросе тоже не быстро, но всё не столько, сколько с фетчем. Возвращаемая информация показывает не только какие индексы использованы, но и в каком порядке, что зачастую бывает даже важнее.

denis_viktorovich

Я почему спрашиваю именно "что почитать доходчиво в электронном виде". У нас стандартно используется MS SQL или Oracle. IB Никто не знает (в т.ч. и я).


http://www.ibase.ru/develop.htm - статьи раздела "Оптимизация запросов".