Текущее время: Пт, июл 04 2025, 11:01

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Пт, окт 22 2004, 13:10
Сообщения: 33
Откуда: Сибирь
Здравствуйте
возникла проблема решить которую я не представляю каким образом, поэтому вынужден обратиться к форумчанам:

во внутреннюю таблицу выбраны данные из довольно таки объемной MKPF, требуется получить к каждой такой записи - поле счета, т. е. поле HKONT таблицы BSEG.
При такой задаче никак не миновать промежуточной выборки из таблицы BKPF, о размерах которой присутствующим известно. Чтобы хоть как-то оптимизировать выбор из этой таблицы (BKPF) я уже измысливал и вначале выбрать из нее заведомо больший диапазон записей, но увы, значения поля AWKEY таблицы BKPF, представляющие собой конкатенацию значений ключевых полей MBLNR + MJAHR из таблицы MKPF, оказалось никак не упорядочено, поэтому эта затея провалилась. Если же решать проблему в лоб, то выборка из таблицы BKPF продолжается неприлично долго (я при этом использовал конструкцию в SELECT'е FOR ALL ENTRIES - по нашим замерам, это абсолютно эквивалентно по скорости выполнения SELECT SINGLE ). В общем, тоже никого выигрыша.
Мало того, таблица BSEG, ради доступа к данным которой все и затевалось, не желает ни с какой другой join'ится из-за своей кластерной природы.

Вопрос: каким то образом можно решить эту задачу, минимизировав
время выборки. Я уже склоняюсь к тому, что такое вообще вряд ли возможно.


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

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Присмотрись к таблице ACCTIT,
ее могут архивировать могут нет как у вас обстоят дела я не знаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 19 2006, 09:03 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Если объёмы данных большие, а сервер дохлый, то никакая оптимизация, конечно, не спасёт. Думаю, что здесь либо надо ограничивать объем данных условиями выборки, либо запускать в фоне задачу, выбирающую большой объём, анализирующую его и сохраняющую результат куда-то ещё, например, в кластерную таблицу.


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

Зарегистрирован:
Вт, дек 07 2004, 15:46
Сообщения: 32
Зачем BSEG джойнить, для этого пойдёт BSIS BSAS.


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Цитата:
значения поля AWKEY таблицы BKPF, представляющие собой конкатенацию значений ключевых полей MBLNR + MJAHR из таблицы MKPF, оказалось никак не упорядочено
Что то я не понял, что где не упорядочено? Кто мешает создать индекс по полю AWKEY? Да, собственно, он обычно там уже есть. У нас, например, он под номером 4 и называется "Индекс по типу и ключу приложения".


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

Зарегистрирован:
Пт, окт 22 2004, 13:10
Сообщения: 33
Откуда: Сибирь
Parazit написал:
Цитата:
значения поля AWKEY таблицы BKPF, представляющие собой конкатенацию значений ключевых полей MBLNR + MJAHR из таблицы MKPF, оказалось никак не упорядочено
Что то я не понял, что где не упорядочено? Кто мешает создать индекс по полю AWKEY? Да, собственно, он обычно там уже есть. У нас, например, он под номером 4 и называется "Индекс по типу и ключу приложения".

Я имел ввиду, что значение поля MBLNR не является упорядоченным, что не позволяет просто втянуть во внутреннюю таблицу кусок таблицы БД указав его границы в запросе и спокойно с ним работать...а жаль. :)
Индекс у нас тоже такой есть...
вот только как показали эксперименты, запрос с SELECT SINGLE позволяет пользоваться конструкцией WHERE AWKEY LIKE..., в противоположность FOR ALL ENTRIES,
где запрещено использование LIKE.
Забавно, вопреки каноническим руководствам разработчика, предложение с LIKE отрабатывает быстрее, нежели с обычным оператором сравнения...причина видимо в том, что, в таком случае, сравниваются напрямую строки и не происходит никаких дополнительных попыток преобразований.
Что касается производительности сервера, думаю что один из немногих САМЫХ производительных, какие только есть в природе. :)

За идеи различные большое спасибо.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Индекс в запросах используется, только если сравнение EQ.
Если NE, и тем более LIKE, индексы не применимы, насколько я понимаю.

Поэтому очень желательно писать WHERE AWKEY = 'xxxxx'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 19 2006, 16:35 
Гость
sourcerer написал(а):
Parazit написал:
Цитата:
значения поля AWKEY вот только как показали эксперименты, запрос с SELECT SINGLE позволяет пользоваться конструкцией WHERE AWKEY LIKE..., в противоположность FOR ALL ENTRIES,
где запрещено использование LIKE.
Забавно, вопреки каноническим руководствам разработчика, предложение с LIKE отрабатывает быстрее, нежели с обычным оператором сравнения...причина видимо в том, что

За идеи различные большое спасибо.


а посмотреть план запроса слабо?
что касается like, то он работает по seek по индексу в том случае, если начало значения - НЕ переменная часть
что-то вроде
WHERE AWKEY LIKE '44600%'
т.ч. ничего удивительного нет

что касается FOR ALL ENTRIES, помнится есть нота 77013
посмотрите, какое значение у вас имеет в rsdb/prefer_union_all


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

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


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

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


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

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