тот же SQL, но другой план объяснения - PullRequest
5 голосов
/ 10 февраля 2011

Я использую один и тот же SQL (ниже) в двух разных средах с одинаковым набором индексов и размером таблицы.Но они дали мне 2 разных плана объяснения ( присоединено )

  1. использует декартово объединение слиянием - очень медленно
  2. использует координатор PX / PX Send / PX RECEIVE- очень быстро

Запрос:

SELECT *
FROM SIEBEL.S_PARTY PRTY, SIEBEL.S_CONTACT CONT, HPQ_IF_ENTERPRISE_DIRECTORY ED,SIEBEL.S_BU BU 
WHERE PRTY.ROW_ID = CONT.PAR_ROW_ID 
AND BU.ROW_ID(+)=CONT.BU_ID 
AND CONT.EMP_NUM IS NOT NULL 
AND ED.HPSTATUS NOT IN ('Terminated', 'Retired', 'Deceased') 
AND ED.EMPLOYEENUMBER = UPPER (LPAD (CONT.EMP_NUM, 8, '0')) 
AND (SUBSTR(ED.MODIFYTIMESTAMP,1,14) >= '19800101' OR ED.MODIFYTIMESTAMP IS NULL)

Есть идеи, что может вызвать эту разницу?И что означает 2-й план объяснения с (PX вещи)?

Обратите внимание, что я не ищу изменения SQL-запроса (зависание в производстве).

Большое спасибо.

Ответы [ 3 ]

8 голосов
/ 10 февраля 2011

PX указывает параллельная обработка . Это может быть недоступно в другой базе данных из-за настроек сеанса (или если другая база данных - это другое издание или версия).

4 голосов
/ 10 февраля 2011

План запроса зависит не только от размера таблицы или индексов, но и от многих других факторов, в основном от статистики таблицы, ее столбцов и индексов.Эти статистические данные включают в себя такие факторы, как коэффициент кластеризации, который может существенно повлиять на расчетную стоимость.

Кроме того, различные системные статистические данные, параметры оптимизатора, структура таблицы (например, разделены и не разделены) иРазмер блока базы данных, все вступают в игру, и малейшая разница между средами может привести к предпочтению другого плана.

3 голосов
/ 10 февраля 2011

У таблиц разный градус?Проверьте этот запрос в обеих средах:

select table_name, degree from all_tables where table_name in ('S_PARTY', 'S_CONTACT', 'HPQ_IF_ENTERPRISE_DIRECTORY','S_BU');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...