Оптимизация производительности SQL-запросов (Oracle 12) - PullRequest
0 голосов
/ 21 мая 2018

Я хотел бы оптимизировать соединение между следующими таблицами, пожалуйста, сообщите.

Дополнительные вопросы:

  1. Лучше всего использовать все индексы между всеми таблицами
  2. Лучше всего использовать синтаксис FROM A соединение B на A.ID = B.ID (быстрее)?
  3. Какое условие будет обработано в первую очередь (оптимизатор так же заботится о наилучшем присоединении)?

    Скажите, пожалуйста, несколько советов, какдля оптимизации.

Количество строк таблицы:

  • inv.mtl_material_transactions = 17.466.581
  • inv.mtl_transaction_lot_numbers = 13.680.350
  • gme.gme_material_details = 5.302.282
  • gme.gme_batch_header = 790.828
  • inv.mtl_system_items_b = 516.148
  • GMD.fm_matl_dtl = 280.056 *

См. Индексы таблицы:

COLUMN_NAME TABLE_NAME
ITEM_ID FM_MATL_DTL
LINE_TYPE   FM_MATL_DTL
FORMULA_ID  FM_MATL_DTL
FORMULALINE_ID  FM_MATL_DTL
FORMULA_ID  FM_MATL_DTL
LINE_TYPE   FM_MATL_DTL
LINE_NO FM_MATL_DTL
ORGANIZATION_ID GME_BATCH_HEADER
BATCH_NO    GME_BATCH_HEADER
BATCH_STATUS    GME_BATCH_HEADER
BATCH_CLOSE_DATE    GME_BATCH_HEADER
BATCH_ID    GME_BATCH_HEADER
ORGANIZATION_ID GME_BATCH_HEADER
BATCH_NO    GME_BATCH_HEADER
BATCH_TYPE  GME_BATCH_HEADER
ORGANIZATION_ID GME_MATERIAL_DETAILS
INVENTORY_ITEM_ID   GME_MATERIAL_DETAILS
LINE_TYPE   GME_MATERIAL_DETAILS
BATCH_ID    GME_MATERIAL_DETAILS
PHANTOM_ID  GME_MATERIAL_DETAILS
MATERIAL_DETAIL_ID  GME_MATERIAL_DETAILS
BATCH_ID    GME_MATERIAL_DETAILS
LINE_NO GME_MATERIAL_DETAILS
LINE_TYPE   GME_MATERIAL_DETAILS
INVENTORY_ITEM_ID   MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
COSTED_FLAG MTL_MATERIAL_TRANSACTIONS
TRANSACTION_GROUP_ID    MTL_MATERIAL_TRANSACTIONS
PARENT_TRANSACTION_ID   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SET_ID  MTL_MATERIAL_TRANSACTIONS
PM_COST_COLLECTED   MTL_MATERIAL_TRANSACTIONS
PM_COST_COLLECTOR_GROUP_ID  MTL_MATERIAL_TRANSACTIONS
COMPLETION_TRANSACTION_ID   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ACTION_ID   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_TYPE_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_TYPE_ID  MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
PICK_SLIP_NUMBER    MTL_MATERIAL_TRANSACTIONS
MOVE_ORDER_LINE_ID  MTL_MATERIAL_TRANSACTIONS
PICKING_LINE_ID MTL_MATERIAL_TRANSACTIONS
RCV_TRANSACTION_ID  MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_ID   MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
PROJECT_ID  MTL_MATERIAL_TRANSACTIONS
TO_PROJECT_ID   MTL_MATERIAL_TRANSACTIONS
SOURCE_PROJECT_ID   MTL_MATERIAL_TRANSACTIONS
TRANSFER_TRANSACTION_ID MTL_MATERIAL_TRANSACTIONS
INVOICED_FLAG   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_TYPE_ID  MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ACTION_ID   MTL_MATERIAL_TRANSACTIONS
OPM_COSTED_FLAG MTL_MATERIAL_TRANSACTIONS
TRANSACTION_EXTRACTED   MTL_MATERIAL_TRANSACTIONS
TRX_SOURCE_LINE_ID  MTL_MATERIAL_TRANSACTIONS
XML_DOCUMENT_ID MTL_MATERIAL_TRANSACTIONS
SUBINVENTORY_CODE   MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
VENDOR_LOT_NUMBER   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
SHIPMENT_NUMBER MTL_MATERIAL_TRANSACTIONS
ACCT_PERIOD_ID  MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_TYPE_ID  MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_NAME MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ACTION_ID   MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_TYPE_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_DATE    MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ID  MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ACTION_ID   MTL_MATERIAL_TRANSACTIONS
TRANSACTION_TYPE_ID MTL_MATERIAL_TRANSACTIONS
TRANSACTION_SOURCE_TYPE_ID  MTL_MATERIAL_TRANSACTIONS
TRANSACTION_ID  MTL_MATERIAL_TRANSACTIONS
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
SEGMENT1    MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
PLANNER_CODE    MTL_SYSTEM_ITEMS_B
WEB_STATUS  MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
CUSTOMER_ORDER_ENABLED_FLAG MTL_SYSTEM_ITEMS_B
SERVICE_ITEM_FLAG   MTL_SYSTEM_ITEMS_B
VENDOR_WARRANTY_FLAG    MTL_SYSTEM_ITEMS_B
USAGE_ITEM_FLAG MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
WIP_SUPPLY_LOCATOR_ID   MTL_SYSTEM_ITEMS_B
BASE_ITEM_ID    MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
STYLE_ITEM_ID   MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
EAM_ITEM_TYPE   MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
DESCRIPTION MTL_SYSTEM_ITEMS_B
INVENTORY_ITEM_STATUS_CODE  MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
AUTO_CREATED_CONFIG_FLAG    MTL_SYSTEM_ITEMS_B
WH_UPDATE_DATE  MTL_SYSTEM_ITEMS_B
ITEM_CATALOG_GROUP_ID   MTL_SYSTEM_ITEMS_B
CATALOG_STATUS_FLAG MTL_SYSTEM_ITEMS_B
PRODUCT_FAMILY_ITEM_ID  MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
COMMS_NL_TRACKABLE_FLAG MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
BUYER_ID    MTL_SYSTEM_ITEMS_B
INVENTORY_ITEM_ID   MTL_SYSTEM_ITEMS_B
ORGANIZATION_ID MTL_SYSTEM_ITEMS_B
TRANSACTION_ID  MTL_TRANSACTION_LOT_NUMBERS
ORGANIZATION_ID MTL_TRANSACTION_LOT_NUMBERS
TRANSACTION_DATE    MTL_TRANSACTION_LOT_NUMBERS
LOT_NUMBER  MTL_TRANSACTION_LOT_NUMBERS
INVENTORY_ITEM_ID   MTL_TRANSACTION_LOT_NUMBERS
ORGANIZATION_ID MTL_TRANSACTION_LOT_NUMBERS
TRANSACTION_SOURCE_ID   MTL_TRANSACTION_LOT_NUMBERS
PRODUCT_CODE    MTL_TRANSACTION_LOT_NUMBERS
PRODUCT_TRANSACTION_ID  MTL_TRANSACTION_LOT_NUMBERS
SERIAL_TRANSACTION_ID   MTL_TRANSACTION_LOT_NUMBERS
TRANSACTION_ID  MTL_TRANSACTION_LOT_NUMBERS
ORGANIZATION_ID MTL_TRANSACTION_LOT_NUMBERS

Запрос, который я создал:

SELECT 
gbh.batch_no,
gbh.batch_id,
msi.segment1 as ITEM,
--msi.description,
lot.lot_number as LOT,
gmd.line_type,
msi.inventory_item_id
,fmd.attribute1 as SIGNIFICANT_ITEM
--,msi.inventory_item_id||lot.lot_number as THING_ID
FROM 
gme.gme_batch_header gbh,
gme.gme_material_details gmd,
inv.mtl_material_transactions mmt,
inv.mtl_system_items_b msi,
inv.mtl_transaction_lot_numbers lot
,GMD.fm_matl_dtl fmd
WHERE 1=1
--AND gmd.line_type = -1 
AND gbh.batch_id = gmd.batch_id 
AND gbh.organization_id = 1509
AND gbh.formula_id = fmd.formula_id
AND msi.inventory_item_id = fmd.inventory_item_id
AND msi.organization_id = fmd.organization_id
AND gmd.organization_id = gbh.organization_id 
AND gmd.organization_id = msi.organization_id
AND mmt.inventory_item_id = msi.inventory_item_id
AND mmt.trx_source_line_id = gmd.material_detail_id
AND mmt.transaction_source_id = gmd.batch_id 
AND mmt.transaction_id = lot.transaction_id
AND lot.TRANSACTION_SOURCE_ID = gbh.Batch_Id
AND lot.organization_id = mmt.organization_id
AND lot.inventory_item_id = mmt.inventory_item_id
...