0
爲什麼Yii2使用ALL_OBJECTS掃描架構,然後通過OWNER =「owner_name」進行篩選,而不是隻掃描USER_OBJECTS?Yii2模式掃描ALL_OBJECTS而不掃描USER_OBJECTS?
由於某些原因,掃描ALL_OBJECTS時執行查詢需要很長的執行時間(45秒),查詢USER_OBJECTS時需要大約2秒。 (生產環境)
SELECT
A.COLUMN_NAME,
A.DATA_TYPE,
A.DATA_PRECISION,
A.DATA_SCALE,
A.DATA_LENGTH,
A.NULLABLE,
A.DATA_DEFAULT,
COM.COMMENTS AS COLUMN_COMMENT
FROM ALL_TAB_COLUMNS A
INNER JOIN ALL_OBJECTS B ON B.OWNER = A.OWNER AND LTRIM(B.OBJECT_NAME) = LTRIM(A.TABLE_NAME)
LEFT JOIN ALL_COL_COMMENTS COM ON (A.OWNER = COM.OWNER AND A.TABLE_NAME = COM.TABLE_NAME AND A.COLUMN_NAME = COM.COLUMN_NAME)
WHERE
A.OWNER = 'owner_name'
AND B.OBJECT_TYPE IN ('TABLE', 'VIEW', 'MATERIALIZED VIEW')
AND B.OBJECT_NAME = 'object_name'
ORDER BY A.COLUMN_ID
由於
但是,由於它已經作爲特定用戶連接,爲什麼不能訪問USER_ *?,我不太關心數據庫和特定的oracle,只是試圖理解這個框架邏輯背後的原因。 – Dunams