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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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