Текущее время: Сб, июл 05 2025, 09:15

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


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

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


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

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