2014-02-27 45 views
0

我沒有非常非常實驗的索引,所以這就是爲什麼我問這個愚蠢的問題。我像遍地搜索,但我沒有得到明確的答案。我可以在全文搜索中使用2個不同的索引嗎?

我將有一個表items的列:idnamecategoryprice

這裏將是3個指標:

  1. id - 主鍵索引
  2. name - 全文索引
  3. category,price - 複合I ndex

我估計我將來會得到700.000-1.000.00行。

我需要做一個fulltext搜索namecategory是一個指定的類別和順序price

所以我的查詢將是這樣的:

SELECT * FROM items 
WHERE MATCH(name) AGAINST(‘my search’) and category='my category' order by price 

我的問題是: 多少索引將被用於執行此搜索?

它會使用2個索引?

[全文索引] & [類別,價格]指數 - 將獲得字詞的搜索結果,然後將使用下一個指數,以配合我categoryprice爲了

它將使用1個指數

[全文索引]僅 - 將獲得字詞的搜索結果,但之後將不得不手動匹配我的categoryprice爲了

我希望我的查詢速度很快,您有什麼意見?我知道fulltext search速度很快,但是如果我應用子類和價格訂單等子句會發生什麼?會一樣快嗎?

回答

1

MySQL只會在任何搜索中使用一個索引。原因是使用兩個索引需要兩次搜索。這會使查詢變得更慢。您可以強制MySQL在查詢中使用特定的索引,但這不是一個好主意。

總結:MySQL只會使用一個索引,它不能使用兩個索引。

+0

如果只使用1個索引,後面的分類和價格會不會很慢? – PHPCore

+0

不像執行兩個查詢那麼慢。一百萬條記錄非常小。所以我不會爲此擔心。 – Namphibian

相關問題