我刚刚开始在我的 MySQL 数据库中使用索引,我有点不确定我的想法是否可行。我有一个 TEXT 字段,可以存储大量文本并且需要进行搜索,还有另一个 id INT 字段。如果我在 id_column 字段上有一个索引,在我的 text_column 上有一个 FULLTEXT 索引,MySQL 是否会在查询中使用这两个索引,例如
SELECT * FROM notes WHERE id_column='123' AND MATCH(text_column) AGAINST(search_text)
??
其次,我有一组可以经常用于组合搜索的列。如果我在这些列中创建多列索引,则如果使用的列在索引中从左到右在一起,索引将一直工作。但是,如果用户遗漏特定列(例如 B)并在索引(如 (A, B, C, D))中使用 A、B、D 进行搜索,会发生什么???
最佳答案
对于问题 1:
是的,查询将使用两个索引。然而,FULLTEXT
索引可能有点棘手,因此最好仔细阅读有关它们的 MySQL 文档,并在查询中使用 EXPLAIN
以确保它们得到正确利用指数。
对于问题 2:
如果您有多列索引,则索引必须具有与要使用的查询相同的顺序的相同列。因此,在您的示例中,不会使用索引。
EXPLAIN
是一个非常强大的工具,用于理解查询如何使用索引,经常使用它是一个好主意(特别是在以编程方式生成的查询上)。 http://dev.mysql.com/doc/refman/5.0/en/explain.html
关于mysql - MySQL 中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901632/