改善sql字符串的可讀性(4) - 多Join拼接的性能測試

 

測試,當on的條件爲false的時候,join是否會被優化?

 

-- 插入測試表

CREATE TABLE person        (id INT NOT NULL ,NAME VARCHAR(20));

CREATE TABLE bill        (id INT NOT NULL ,NAME VARCHAR(20),personId INT );

 

-- 插入測試數據

DELETE FROM person;

INSERT INTO person  VALUES(1,"martin fowler");

INSERT INTO person  VALUES(2,"rebert martin");

 

-- 插入測試數據

DELETE FROM bill;

INSERT INTO bill  VALUES(1,"bill1",1);

INSERT INTO bill VALUES(2,"bill2",1);

INSERT INTO bill VALUES(2,"bill2",3);

SELECT * FROM bill;

 

// mysql 是不能優化掉的,執行計劃內有person

EXPLAIN SELECT bill.* FROM bill LEFT JOIN person ON FALSE AND bill.personId = person.id

 

同樣的測試,sqlserver可以優化掉。

即使select內有person的字段也可以。相見 執行計劃

SELECT bill.*,person.* FROM bill LEFT JOIN person ON 1=0 aND bill.personId = person.id

 

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 2293
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章