2017-06-29 89 views
0

我有一个列有指数型的Hash与具有1..128MYSQL约哈希索引类型索引是忽略有时

值筛选

CREATE INDEX indexName ON myTable (studentType) USING HASH; 

有时候,我们有这样的查询。

Select * from myTable where studentType =1; 
Select * from myTable where studentType =2; 

这里使用索引很好,但我读的文档和一些东西,真正吸引我的注意,我想,也许我没有得到很好。

Only whole keys can be used to search for a row. (With a B-tree index, any leftmost prefix of the key can be used to find rows.) 

这是否意味着,如果我有这样的查询..

Select * from myTable where studentType =2 and status=121; 

这里MySQL是忽略了散列索引“studentType”?因为where子句使用列索引之外的其他列?或者它在例子中说了什么。

这真的是我关心的问题。

对不起,如果问题很简单。

此致敬礼。

回答

0

InnoDB没有HASH索引。你的声明变成了BTree

这些B树索引无论是工作得很好,你最后SELECT

INDEX(studentType, status) 
INDEX(status, studentType)