建表语句:
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就是全表扫描了。