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

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


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

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


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

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