2013-04-22 36 views
2

使用join語句時,我想用類似的條件來加入表格。 什麼是最有效的方法呢?在聯合聲明中使用的最有效方式是什麼?

使用fielda like CONCAT ('%', fieldb, '%')似乎並不非常有效

+2

是的,它非常低效,因爲它會殺死列上的任何索引定義。最好的方法是重新創建表或類似於添加一個新列,將索引放在該列上,然後重新執行聯接。 – 2013-04-22 15:44:29

+1

你可以使用任何你想要的連接條件。最終歸結的是真實/錯誤的價值。如果連接結果爲true,則DB將在所考慮的兩行上執行連接。如果爲false,則會跳過行組合。鑑於你沒有提供任何表格結構/細節/要求,我們不能告訴你答案是什麼。 – 2013-04-22 15:46:57

+0

什麼應用程序語義鼓勵您使用%+ field +%?如果你對你想做什麼給予更多的細節,那麼社區可以提供更多的幫助。 – 2013-04-22 16:43:27

回答

1

使用2野生焦炭呈現指數沒用,你可以做的是消除了一個在前面,比MySQL將仍然使用索引來找到任何您的搜索對於。如果沒有索引,創建一個使用下面的代碼:

CREATE INDEX indexname ON tablename(columnname); 

然後將查詢更改爲

fielda like CONCAT (fieldb, '%') 

利用索引的,其他的事情要考慮的是列文本字段或簡單只是一個varchar字段,如果它包含更長的文本,應該考慮全文搜索。

下面是關於這個問題的更深入的文章與樣品的和很好的解釋等

http://devzone.zend.com/26/using-mysql-full-text-searching/

相關問題