Yii2模式扫描ALL_OBJECTS而不是USER_OBJECTS?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2模式扫描ALL_OBJECTS而不是USER_OBJECTS?相关的知识,希望对你有一定的参考价值。

为什么Yii2使用ALL_OBJECTS扫描架构,然后按OWNER =“owner_name”进行过滤,而不是仅扫描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

谢谢

答案

访问ALL_*views / synonyms和USER_* views / synonym之间的区别。

ALL_OBJECTS描述了当前使用可访问的所有对象,而USER_OBJECTS仅列出属于当前用户的对象。

以上是关于Yii2模式扫描ALL_OBJECTS而不是USER_OBJECTS?的主要内容,如果未能解决你的问题,请参考以下文章

什么是真正的 sys.all_objects?

Yii2 RESTful API,带有数据访问对象而不是活动记录

RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?

RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?

Yii2网格视图使用ajax而不是Pjax进行过滤

使用 amnah 身份验证后,用户模块的后端 crud 显示 Yii2 用户模块而不是用户 CRUD