Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ускорение запроса / 14 сообщений из 14, страница 1 из 1
29.10.2007, 10:47
    #34900722
Miheev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Здравсвуйте!
Помогите ускорить запрос:

SELECT Code_Id, AVG(VAL) FROM SensVal WHERE Code_Id in (50287,50284,50452) AND Date_Value >= '2005-01-01 13:00:00' AND Date_Value <= '2005-05-01 13:00:00' AND VAL <> 0 GROUP BY Code_Id

Примечание:
D_VAL = 0 - не должны учитываться, т.к. в моем случае это ошибочные данныев реальности Code_Id более 20 штук
...
Рейтинг: 0 / 0
29.10.2007, 11:06
    #34900782
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Ты бы индексы то покзал ... как и план запроса
...
Рейтинг: 0 / 0
29.10.2007, 11:22
    #34900843
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Если дата не "строка", я бы применил диапазон
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
 Code_Id,
 AVG(VAL) 
FROM
 SensVal 
WHERE
 Code_Id in ( 50287 , 50284 , 50452 )
  AND
  Date_Value BETWEEN '2005-01-01 13:00:00' AND '2005-05-01 13:00:00'
   AND
   VAL <>  0  
GROUP BY
 Code_Id
А у VAL ноль это часом не NULL?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
29.10.2007, 11:26
    #34900860
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Miheev , что выдаст меньше записей?
- Запрос по
Код: plaintext
Code_Id in (*)
- Запрос по
Код: plaintext
Date_Value BETWEEN date1 AND date2
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
29.10.2007, 12:57
    #34901257
CJIECAPb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Если различных значений Code_Id порядка 20, то эффективным будет битмап индекс по этому полю, кроме того если запрос выполняется под каше версии 5.1 или выше, можно создать вычилслимое поле, принимающее значение 1 когда VAL<>0 и 0 в других случаях и также повесить на это новое поле битмап индекс.
...
Рейтинг: 0 / 0
29.10.2007, 13:00
    #34901273
Miheev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
VAL <>0, ибо если VAL=0 означает что данные не записались на данную метку времени

Запрос по
Code_Id in (*)


дает в разы меньше записей чем


Запрос по
Date_Value BETWEEN date1 AND date2
...
Рейтинг: 0 / 0
29.10.2007, 13:07
    #34901308
Miheev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
а также:

Index CodeDatePK On (CodeId, DateVal) [ Unique ];

Index Date On DateVal;
...
Рейтинг: 0 / 0
29.10.2007, 13:11
    #34901325
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Miheev , индексы-то есть у тебя в таблице SensVal ?

Про ноль почему спрашиваю... Он может не храниться. Т.е. значение нужно проверять как
Код: plaintext
VAL is not NULL
Да и запрос у тебя явно не по кащейскому классу, т.к. есть поля типа Code_Id . Такие в Каше не создаются...

Идея CJIECAPb про вычисляемое поле так же может помочь...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
29.10.2007, 13:13
    #34901336
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Т.е. отдельно по Code_Id индекса нет? Возможно его создание даст ускорение запросу...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
29.10.2007, 13:16
    #34901348
Miheev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
CODE_ID не я назвал и не я создавал, спрашивал про этот запрос на другом форуме - ничего не помогло.
...
Рейтинг: 0 / 0
29.10.2007, 13:19
    #34901360
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Что значит не помогло? :)
- Создай индекс по Code_Id
- Создай вычисляемое поле и индекс по нему
Думаю что разница будет.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
29.10.2007, 13:20
    #34901372
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Miheevспрашивал про этот запрос на другом форуме
А где еще про Кащей пишут?
...
Рейтинг: 0 / 0
29.10.2007, 13:30
    #34901420
Miheev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
я спрашивал на форуме SQL :)
а вот форум Каше

http://tech.groups.yahoo.com/group/cache_ru/messages
...
Рейтинг: 0 / 0
29.10.2007, 13:53
    #34901501
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорение запроса
Miheevа вот форум Каше
http://tech.groups.yahoo.com/group/cache_ru/messages
На эту рассылку я подписан...
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ускорение запроса / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]