Текущее время: Вс, июл 20 2025, 05:19

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по индексам
СообщениеДобавлено: Пт, окт 06 2006, 21:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Нужно считать данные из таблиц KEKO и CKIS по номеру прогона, дате
и версии калькуляции, ну и другим параметрам. Объединяю таблицы. По полям KALAID KALADAT таблицы KEKO есть вроде индекс. Но че-то 9 материалов за квартал выбирает за 20 секунд при числе записей в KEKO около 1 000 000.
Может кто подскажет как сократить время выбора? :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 06 2006, 21:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Если поиск идет по совокупности полей, хоть одно из которых не входит в индекс, индекс по сути и не при делах...
Можно <я не знать русский языка> сделать выборку только по индекированным полям и уже на клиенте убить те, которые не проходят по доп. условиям. Например с помощью DELETE и RANGE.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по индексам
СообщениеДобавлено: Пт, окт 06 2006, 22:26 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ROKO написал:
... По полям KALAID KALADAT таблицы KEKO есть вроде индекс. ...


Так вроде или есть? И если есть, то создан ли индекс непосредственно в БД?
По поводу сокращения выборки всё очень персонально - надо смотреть запрос, возможно надо смотреть что с базой, ...

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 06 2006, 22:43 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Токма не запрос, а план выполнения, скорее.
Плюс касательно выборки я уже сказал...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, окт 07 2006, 16:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Пономарев Артем писал:
Если поиск идет по совокупности полей, хоть одно из которых не входит в индекс, индекс по сути и не при делах...
Можно <я не знать русский языка> сделать выборку только по индекированным полям и уже на клиенте убить те, которые не проходят по доп. условиям. Например с помощью DELETE и RANGE.

Поясни че-то не понял?
В БД существуют индексы: по полям KALAID и KALADAT , а также по
полю KALNR в таблице KEKO. Делаю выборку:

SELECT keko~matnr ztfcalk1~gruppa
ckis~kstar ckis~meeht
ckis~werks ckis~matnr
ckis~wertn ckis~menge
makt~maktx csku~ltext
FROM keko
INNER JOIN ckis ON keko~bzobj = ckis~bzobj AND
keko~kalnr = ckis~kalnr AND
keko~kadky = ckis~kadky

LEFT JOIN ztfcalk1 ON ckis~kstar = ztfcalk1~kstar
LEFT JOIN makt ON ckis~matnr = makt~matnr
LEFT JOIN csku ON ckis~kstar = csku~kstar
INTO TABLE it_ckis
FOR ALL ENTRIES IN it_ckis_nk

WHERE
ckis~lednr = '00' AND
ckis~kstar <> ' ' AND
keko~werks = p_bwkey AND
keko~kokrs = kokrs AND
keko~tvers = num_vers AND
keko~kalka = '01' AND
keko~klvar = 'PPC1' AND
keko~poper IN so_kvart AND
keko~bdatj = p_bdatj AND
keko~kalaid = it_ckis_nk-kalaid AND
keko~kaladat = it_ckis_nk-kaladat AND
keko~kalnr = it_ckis_nk-kalnr.

На этом коде объяснить можешь?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, окт 07 2006, 23:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 03 2006, 08:00
Сообщения: 344
всё вроде нормуль, но частое использование join само по себе тормозит... до сих пор не могу понять людей-программеров, которые используют много-вложеннные "INNER-JOIN" зачем и за что? :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, окт 08 2006, 23:06 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 08 2006, 22:57
Сообщения: 81
Пол: Мужской
Превед,

можно попробовать SELECT с индексом:
пример:
.......
CLEAR h_yyt_ladkz.
IF NOT ivekp_tlp[] IS INITIAL.
SELECT yyttcode FROM vepo
INTO CORRESPONDING FIELDS OF TABLE ivepo_tlp
FOR ALL ENTRIES IN ivekp_tlp
WHERE unvel = ivekp_tlp-venum
AND yyttcode IN ('YTVK010','YTVK011')
GROUP BY yyttcode
%_HINTS ORACLE
'INDEX("&TABLE&" "VEPO______A" "VEPO~A" "VEPO^A")' .
IF sy-dbcnt = 0.
h_yyt_ladkz = space.
ELSEIF sy-dbcnt = 1.
READ TABLE ivepo_tlp INDEX 1.
CASE ivepo_tlp-yyttcode.
WHEN 'YTVK010'.
h_yyt_ladkz = '1'.
WHEN 'YTVK011'.
h_yyt_ladkz = '2'.
ENDCASE.
ELSE.
h_yyt_ladkz = '3'.
ENDIF.

Успехов
Юрий


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 09 2006, 08:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Если ckis~KALKA уточнить, то индекс ckis пошире будет использоваться (если, конечно, задача позволяет).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 09 2006, 08:52 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Jouri, не учите плохому... человек пусть сначала разберется что есть индексы и как они используются, посмотрит план запроса в ST05, пооптимизирует... и только потом пусть пользуется хинтами, да еще и платформенно-зависимыми

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 10 2006, 09:04 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Ну и сказать админам чтоб статистику по таблице собрали


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB