2014-02-27 29 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

相关问题