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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章