Текущее время: Вт, июл 29 2025, 12:17

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 12:44 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
У тебя похоже дело не в full scan, а в том, что создается временная таблица для сортировки.

CLIENT SPECIFIED пробовал ставить?

UPD: Видишь, по другому индексу пошел
INDEX RANGE SCAN S987~VAB
Что за индекс?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 13:25 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
vga написал(а):
У тебя похоже дело не в full scan, а в том, что создается временная таблица для сортировки.

CLIENT SPECIFIED пробовал ставить?

UPD: Видишь, по другому индексу пошел
INDEX RANGE SCAN S987~VAB
Что за индекс?


MANDT
MATNR

Задействует, видимо как раз из-за разрыва ключа (выпадает VBELN).

То есть, хочешь сказать - когда дата одна, не создает временную таблицу, а когда хотя бы две - создает сначала временную таблицу, а затем по ней идет?

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 13:29 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
В данном эхплайн плане видно, что подцепился не тот индекс. То есть база, использую неверный индекс не имеет информации о сортировке, чтобы выполнить твой group by и поэтому вынуждена сначала создать промежуточную таблицу, отсортировать ее , а потом только по ней обработать запрос.

Короче, если CLIENT SPECIFIED не поможет, используй %_HINTS c явным указанием индекса.


Последний раз редактировалось vga Вт, окт 30 2007, 13:35, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 13:34 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
vga написал(а):
В данном эхплайн плану видно, что подцепился не правильный индекс. То есть база, использую неверный индекс не имеет информации о сортировке, чтобы выполнить твой group by и поэтому вынуждена сначала создать промежуточную таблицу, отсортировать ее , а потом только по ней обработать запрос.

Короче, если CLIENT SPECIFIED не поможет, используй hint


Млин. Стремно мне переставлять ключевые поля местами в такой громадной таблице (VBELN задвинуть подальше).

Попробую составить вторичный индекс, который будет повторять ключ, но без VBELN (хотя, млин, тоже затратно получается). И укажу хинтом.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 13:46 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, окт 21 2006, 20:34
Сообщения: 280
так может просто хинтом индекс скормить первый - да посмотреть скорость


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 17:27 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Только-только индекс сактивировался (все ж 60 лимонов записей), поэтому только сейчас отвечаю.
Теперь выполняется как надо.

На самом деле, мне в принципе было интересны причины такого странного поведения.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
111 написал(а):
Только-только индекс сактивировался (все ж 60 лимонов записей), поэтому только сейчас отвечаю.
Теперь выполняется как надо.

На самом деле, мне в принципе было интересны причины такого странного поведения.

Попробуйте если не трудно указать хинтом на первый индекс - очень интересно что из этого получится.
А по поводу причин - боюсь наговорить глупостей, но это срывает крышу оптимизатору запросов. Как одна из возможных причин такого крышесрыва - давно не обновляемая статистика по индексам

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 17:47 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
111 написал(а):
Только-только индекс сактивировался (все ж 60 лимонов записей), поэтому только сейчас отвечаю.


Витя, лучший способ угробить систему, это создать с пяток таких индексов на частообновляемую таблицу на 60 млн. записей.

Отчет может раз в год будет нужен, а база будет тормозить постоянно.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 18:26 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
ЫХ, да знаю я, Валер, но нет уже сейчас времени на эксперименты :-( .
А убивать сейчас этот индекс и потом заново создавать тем более нет времени.
Тем более, что перенос каждого ТрЗ в продуктив - определенный гемор (с точки зрения согласования и времени исполнения).

Хотя... может, завтра останется время свободное, тада попробую хинт другой указать.

Еще хочу сказать - не было у этой таблицы ни одного индекса, кроме этого S987~VAB .
S987~0 - системный индекс. Я так думаю, индекс по ROWID, когда не используется вторичные индексы и поиск идет только по первичному ключу.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 18:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
111 написал(а):
На самом деле, мне в принципе было интересны причины такого странного поведения.

Ничего странного, всё очевидно. Четко оптимизируюется только условия "=" объединенные "AND". Соответственно, исходя из этого, нужно строить индексы, помещая поля, выбираемые по "=", вверх ключа.

У меня есть одна любопытная мысля. Что, если создать таблицу дат, накладывать условие интервала на нее, а уже с ней по "=" джойнить нужную таблицу?!

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 30 2007, 18:59 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Parazit написал:
111 написал(а):
На самом деле, мне в принципе было интересны причины такого странного поведения.

Ничего странного, всё очевидно. Четко оптимизируюется только условия "=" объединенные "AND". Соответственно, исходя из этого, нужно строить индексы, помещая поля, выбираемые по "=", вверх ключа.


Ну я, честно сказать, за 7 лет работы столкнулся с такими чудесами впервые.

Parazit написал:
У меня есть одна любопытная мысля. Что, если создать таблицу дат, накладывать условие интервала на нее, а уже с ней по "=" джойнить нужную таблицу?!


Наверняка есть такая, сейчас память изменяет :-) .
Обычно выборки идут за месяц.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Чудеса продолжаются.
Программа заполнения инфосистемы.
Крутится, но нифига не обновляет. Изначально, программа обновления была с ошибкой, не заполнялось два поля.
Затем была разработана программа для обновления только этих 2-х полей (по уже имеющимся записям).

Код:
Code:
SELECT        * FROM  S987 CLIENT SPECIFIED
       WHERE  MANDT  = sy-mandt.
....
ENDSELECT .


Так вот, селектом выбираются... несуществующие записи.
Т.е. ставим точку прерывания сразу за SELECT... , ищем запись с таким ключом в SE16 и... не находим :shock: :shock: :shock: .

Внутри конструкции SELECT... ENDSELECT стоял оператор
Code:
modify s987 from s987.


Он отрабатывал с SY-SUBRC=0, НО ЗАПИСЬ В ТАБЛИЦЕ НЕ ПОЯВЛЯЛАСЬ!!! :shock: :shock: :shock:
Затем был заменен на
Code:
update s987 from s987.


Понятно, что стало SY-SUBRC=4 .

НЕ ПОНИМАЮ! :evil:

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
я стесняюсь уже навязываться, но пусть базис попробует пересобрать статистику по этой таблице

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


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

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
ArmAnn написал:
я стесняюсь уже навязываться, но пусть базис попробует пересобрать статистику по этой таблице


Да ничего, спасибо за полезный совет :) .
Ладно, уже решили эту систему просто прибить и создать заново, и процесс уже запустили.
Видимо, просто карма у нее неправильная :) .
Она в принципе сделана не очень удачно (функциональщик собирал).

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 06 2007, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
111 написал(а):
Так вот, селектом выбираются... несуществующие записи.
Т.е. ставим точку прерывания сразу за SELECT... , ищем запись с таким ключом в SE16 и... не находим :shock: :shock: :shock: .

Select и SE16 - далеко не одно и то же. Ключи, введенные на экране SE16 сначала преобразуются. Могут быть удалены лидирующие нули, или наоборот, добавлены. Или из внешнего представления переведены во внутренее.

111 написал(а):
Внутри конструкции SELECT... ENDSELECT стоял оператор
Code:
modify s987 from s987.


Он отрабатывал с SY-SUBRC=0, НО ЗАПИСЬ В ТАБЛИЦЕ НЕ ПОЯВЛЯЛАСЬ!!! :shock: :shock: :shock:
Затем был заменен на
Code:
update s987 from s987.


Понятно, что стало SY-SUBRC=4 .

НЕ ПОНИМАЮ! :evil:

Modify отличается от Update тем, что Modify добавит запись, если она не существует, а Update может модифицировать только существующие.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4  След.

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


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

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


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

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