2011-08-03 27 views
0

我嘗試做如下選擇:一個簡單的索引連接兩個表以年齡

select `table1`.`index2` 
    from `table1`, `table2` 
    where `table1`.`index1` = `table2`.`index1` 
     and `table1`.`index2` != `table2`.`index2` 

index1index2varchar(255)和編制索引。兩個表都包含大約50k行。
這個查詢花了10分鐘,我殺了它,因爲它太長了。
爲什麼需要這麼長時間?

+0

都是四個'table1'.'index1','table2'.'index1','table1'.'index2'和'table2'.index2'索引?只是爲了確保... – Jacob

+0

爲什麼不使用左連接或內連接? –

+0

@cularis,是的,他們被索引 – Dani

回答

0

此查詢有最佳效果?使用左外連接或內連接有時可以改善查詢。

select `table1`.`index2` 
from `table1` 
inner join table2 on `table1`.`index1` = `table2`.`index1` 
    and `table1`.`index2` != `table2`.`index2` 
+0

這已經是隱式語法的內部連接....你的查詢和我的一樣 – Dani

0

發現問題,與查詢無關。
模樣創造一個像

index(`index1`, `index2`) 

索引創建某種愚蠢的指數,但創造它像

index(`index1`), 
index(`index2`) 

固定我的問題。第一個做的是什麼?