mysql和oracle视图是否走索引说明

建表语句:

CREATE TABLE TB_VIEW_INDEX
(
   IDX_ID INT NULL ,
   IDX_NMAE VARCHAR2(5)
);
CREATE TABLE TB_VIEW_INDEX1
(
   IDX_ID INT NULL ,
   IDX_NMAE VARCHAR2(5)
);
CREATE INDEX IDX_ID ON TB_VIEW_INDEX(IDX_ID);
insert into TB_VIEW_INDEX values (1,'a');
commit ;
CREATE VIEW VW_VIEW_INDEX  AS  SELECT * FROM TB_VIEW_INDEX;
DROP VIEW VW_VIEW_INDEX;
CREATE VIEW VW_VIEW_INDEX  AS  SELECT * FROM TB_VIEW_INDEX UNION ALL 
 SELECT * FROM TB_VIEW_INDEX1;

使用单表建视图

ORACLE数据库执行计划

MYSQL数据库执行计划

使用union all 建视图

ORACLE执行计划

MYSQL执行计划

经过测试发现,mysql和oracle如果使用单表创建视图时,如果表中有索引,视图会按照表中索引;如果建视图中包含union all 时,oracle视图还是走索引,但是mysql就是全表扫描了。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页