看板 Web_Design 關於我們 聯絡資訊
就這一題題目來講 query tree就應該能夠最佳化了吧 理論上MySQL應該也要能夠做到最佳化才對(我沒實際驗證過 只是就理論上來講) 在建出query tree的時候 第二個步驟 就會把select(關聯式代數的select 可以把它想像是SQL的WHERE)向下移動 第三個步驟 調整樹結構 就會把最嚴格的要求放到最靠近terminal的地方 因此WHERE xxx=xxx就會最先被執行 所以你的INNER JOIN不管是否寫在JOIN敘述 或是WHERE子句裡 理論上都會被optimize成相同的query tree的 ※ 引述《grassboy2 (活力花俏草兒Grassboy大렩》之銘言: : 嗯…想要問一下關於他的用法… : 就是啊…當我在執行 : SELECT `tableA`.`attr1` `tableB`.`attr1` : FROM `tableA` INNER JOIN `tableB` : ON `tableA`.`id` = `tableB`.`foreign_id` : WHERE `tableA`.`id` = '123' 時 : MYSQL會對那些`tableA`.`id` <> '123'的資料也先作JOIN嗎? : 如果會的話@@~那…感覺在資料量一多的時候… : 無法滿足WHERE條件的資料一定會很多…不就作了一堆無謂的JOIN了嗎@@~ : 那…INNER JOIN的效率感覺很差耶@@~ : 最近看到INNER JOIN滿想問這問題的^^" : 板上的高手可以指點一下嗎><~謝謝囉~ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.169.200 ※ 編輯: seagal 來自: 140.109.169.200 (07/27 22:27)