小编Kar*_*run的帖子

INNER JOIN vs INNER JOIN(SELECT.FROM)

同一查询的这两个版本在性能方面有什么不同吗?

--Version 1
SELECT p.Name, s.OrderQty
FROM Product p
INNER JOIN SalesOrderDetail s on p.ProductID = s.ProductID

--Version 2
SELECT p.Name, s.OrderQty
FROM Product p
INNER JOIN (SELECT ProductID, OrderQty FROM SalesOrderDetail) s on p.ProductID = s.ProductID
Run Code Online (Sandbox Code Playgroud)

我听说(由DBA)说版本2更快,因为它在内部SELECT语句中仅获取查询所需的列.但这似乎没有意义,因为查询性能(据我所知)是基于受影响的行数和返回的最终列列表.

两者的查询计划是相同的,所以我猜这两者之间没有任何区别.

我对么?

sql sql-server join inner-join

52
推荐指数
2
解决办法
20万
查看次数

"刷新物化视图时,"太多'SUBSTR'声明与此调用匹配"

我将物化视图设置为REFRESH FAST ON COMMIT.源表中有4个BLOB列,我将转换为VARCHAR2作为MV的一部分:

CREATE MATERIALIZED VIEW Employee_MV
REFRESH FAST ON COMMIT
WITH PRIMARY KEY
AS
SELECT UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR (History, 2000, 1)), //BLOB column
       <3 more blob columns with similar conversions>,
       <misc columns from different tables>,
       <rowid columns for tables for REFRESH FAST to work>
FROM   <list of tables with JOINs>
Run Code Online (Sandbox Code Playgroud)

如果在使用BLOB列的参与表中插入行时刷新MV - 无论是通过ON COMMIT还是ON DEMAND - 它会出现以下消息错误:

ORA-12008: error in materialized view refresh path
ORA-06553: PLS-307: too many declarations of 'SUBSTR' match this call
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2545
ORA-06512: …
Run Code Online (Sandbox Code Playgroud)

oracle materialized-views

5
推荐指数
1
解决办法
908
查看次数

标签 统计

inner-join ×1

join ×1

materialized-views ×1

oracle ×1

sql ×1

sql-server ×1