Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизировать запрос, использующий EXTRACT 
V
    Опции темы
ksili
Дата 27.11.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Вот такой запрос:
Код

select extract(DAY from TIME_BEGIN), SUM(TIME_CALL_REAL), SUM(SUMMA) from T_CALL
where extract(MONTH from TIME_BEGIN)=6
and extract(YEAR from TIME_BEGIN)=2007
group by extract(DAY from TIME_BEGIN)

выполняется долго. 
Индекс на поле TIME_BEGIN есть. Подозреваю, что из-за EXTRACT от индекса никакого толку нету, т.к. анализ производительности в IBExpert показывает, что производится почти 4 миллиона неиндексированных чтения, и ни одного индексированного

Добавлено через 7 минут и 55 секунд
Ага! Изменил на 
Код

select extract(DAY from TIME_BEGIN),SUM(TIME_CALL_REAL),SUM(SUMMA) from T_CALL
where TIME_BEGIN between '01.06.2007' and '30.06.2007'
group by extract(DAY from TIME_BEGIN)

и стало всего примерно 350 тыщ индексированных чтений! Время тоже уменьшилось  smile 

Правда теперь надо дату как-то формировать... в месяцах-то разное количество дней.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Deniz
Дата 28.11.2007, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(ksili @  27.11.2007,  13:47 Найти цитируемый пост)
Правда теперь надо дату как-то формировать... в месяцах-то разное количество дней. 
можно не форматировать в запросе указать 
Код
...
where (TIME_BEGIN >= '01.06.2007') and (TIME_BEGIN < '01.07.2007')



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 28.11.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Deniz,  smile  просто и гениально!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.