Страница 1 из 1

Низкая скорость запроса Pervasive

Добавлено: 29 июл 2008, 14:42
Ренат
Доброе время суток.

Есть задача - делать срезы БД за определенный период времени. Далее предпологается отслеживать что изменилось. Интерисуют лишь наладные и их спецификации. Предполагаю переносить данные посредством средств SQL сервера через драйвер ODBC в базу SQL сервера.
В чем проблема - Пишу запрос. Для начала ,самое простое, что могло прийти с лету

Код: Выделить всё

SELECT  K.NREC, K.NAME, K.DESCR, K.SUMMA, K.DSOPR, K.NSOPR, K.VIDSOPR, K.CPODRFROM, K.CPODRTO, K.CORG
FROM KATSOPR K
where K.Dsopr ='2008-04-04'
Запрос выполняется очень долго! :(
Почему так может происходить?
Спасибо.

Добавлено: 29 июл 2008, 14:50
edward_K
это где? в сапорте? если да то один вопрос - когда ж народ научится форумы читать и не писать неиндексные условия запроса?
where K.Dsopr ='2008-04-04'
замените на
where (( 0 == k.cnzakaz and date(4,4,2008) == k.dsopr )) ;
если все таки cnzakaz заполнено где то смотрите индекс katsopr02
а мзмененые можно по и по atl_lastdate вытянуть - сразу нужное получите.

Добавлено: 29 июл 2008, 14:57
Ренат
Нет. Это на MS SQL сервере в ветке "Data Transformation Services" раздел "Local Package". Так же можно запрос выполнить и через
"Pervasive Control Center"

Добавлено: 29 июл 2008, 15:16
edward_K
ну в любом разе такого индекса нет
добавте условие по cnzakaz первым.

Добавлено: 29 июл 2008, 15:30
Ренат
Переделал в

Код: Выделить всё

SELECT  K.NREC, K.NAME, K.DESCR, K.SUMMA, K.DSOPR, K.NSOPR, K.VIDSOPR, K.CPODRFROM, K.CPODRTO, K.CORG
FROM KATSOPR K
where (0=K.cnzakaz and '2008-04-04'=K.Dsopr)
Теперь работает быстро. Но раз нет индекса значит без страшных тормозов не обойтись?

Добавлено: 29 июл 2008, 17:08
edward_K
на то они и индексы :)