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