對“SQL優化(一)” 中建立的表執行增删改查等操作,并檢視這些操作的執行過程。如“查詢課程編号為2 或教師證編号為3 的老師資訊”。相應的SQL查詢語句如下:
select Teacher.* from Teacher, Course, TeacherCard where Teacher.Id = Course.TeacherID and Teacher.CardID = TeacherCard.ID and (Course.ID = 2 or TeacherCard.ID = 3);
執行結果:

查詢SQL語句的執行過程: explain + SQL語句。
explain select Teacher.* from Teacher, Course, TeacherCard where Teacher.Id = Course.TeacherID and Teacher.CardID = TeacherCard.ID and (Course.ID = 2 or TeacherCard.ID = 3);
執行結果:
先看上表中的id值,它們都為1,此時SQL語句從上往下順序執行,即執行順序為Teacher,TeacherCard,Course,三張表的資料數目(rows)分别為3,3,4。在這裡我們有一個猜想:是否資料量小的表上優先執行查詢?
為了驗證我們的猜想,我們來增加Teacher表中資料的數目(5條及以上),然後重新檢視上述SQL語句的執行順序。
insert into Teacher values(4,"Amy",1);
insert into Teacher values(5,"Tom",1);
執行結果
此時,SQL的執行順序為TeacherCard, Course,Teacher,三張表的資料數目分别為3,4,5。這已經與上面的順序(Teacher,TeacherCard, Course)完全不同了。實驗結果驗證了我們的猜想:連表查詢時,資料量小的表上優先執行查詢。
資料庫為什麼會安排這樣的執行順序呢?通過觀察我們可以發現,優先查詢資料量小的表,執行過程中産生中間表最小,執行效率最高。