当前位置: 首页 > 面试题库 >

多列上的FULLTEXT INDEXES如何工作?

滕鸿畴
2023-03-14
问题内容

在3列上添加FULLTEXT INDEX时,是在3列上添加1个单个索引还是在3个单独的索引上添加?

我问这个问题,因为此刻我正在像这样使用FULLTEXT:

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');

我刚刚在搜索界面中添加了一个用户选项,用户可以在其中从搜索中删除其中一列。所以我能够做到这一点而又不会丢失索引,而我只使用了3列中的2列:

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
If (UserOptionRemoveCol == "selected") {
    SELECT * FROM myTable WHERE MATCH (col1, col2) AGAINST ('word');
} else {
    SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');
}

还是我必须在两列以及三列上创建一个新的FULLTEXT索引?

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
ALTER TABLE myTable ADD FULLTEXT 2colsIndex (col1,col2);

问题答案:

浏览手册CREATE FULLTEXT INDEX,它表明您可以通过重复column_name这样来指定多个列:

CREATE FULLTEXT INDEX ON table_name (column_name1 [...], column_name2 [...]) ...

有了这些信息,我就可以假设它 在3列中 创建了 一个索引
。此外,我假设它在关于复合索引的从左到右规则下可以工作(我将通过检查以下语句的执行计划来验证这一点)。因此,(col1, col2, col3)必须按该顺序选择复合索引on才能使用(SELECT col1, col2 ...)。如果要调用col2它将不使用索引。



 类似资料:
  • 问题内容: 在用户属于特定组织的情况下,我们具有以下实体关系。我的查询看起来像是“从org =:org用户选择”或“从org =:org用户输入和type =:type选择” 我在User类上有单独的索引。由于外键元素上的索引,因此第一个查询会很好。第二个查询是否对组织和类型列要求多列索引。如果是这样,我应该如何注释以创建一个这样的索引。 问题答案: 使用hibernate特定注释可以做到这一点。

  • 问题内容: 我有一个多维数组。主数组是 我想做的是先对数组进行排序,然后再对进行排序。我知道在JavaScript 中您可以将自定义函数放入其中,就我而言,我有: 这是刚刚排序的一列,即OWNER_NAME很好,但我怎样修改它进行排序,然后? 问题答案: 如果所有者名称不同,请按它们排序。否则,使用决胜局的发布名称。

  • 问题内容: 我如何使用JPA条件API执行以下操作: 使用CriteriaBuilder.countDistinct在一个列/路径上执行此操作很简单,但是如何在两个路径/列上执行此操作? 问题答案: 这是一个较晚的答案:-)尽管我不确定情况是否有所改变。 最近,我遇到了非常相同的需求,并使用concat解决了该需求,即通过将列连接为 伪列 ,然后将其连接到 伪列 上。 但是我不能使用,因为它生成了

  • 问题内容: 可以说有一个嵌套列表,例如: 在此函数上调用时: 收到的输出是 为什么以及如何运作?它有哪些用例? 问题答案: 如何在Python中比较列表和其他序列? 从字典上比较Python中的列表(和其他序列),而不是基于任何其他参数。 可以将序列对象与具有相同序列类型的其他对象进行比较。比较使用 字典 顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依

  • 我正在读MongoDB在行动这本书。我有一个关于的问题。 在中,该书给出了一个多对多关系的示例。它给出了文档和文档。 我理解这里的多对多关联。基本上,可以有一个带有_id等数组的键。所以我不想问类似MongoDB多对多关联的问题 我的问题是关于的,书中给出了关于查询多对多关系的两个示例查询。下面是两个查询: > 是什么意思?我以为只存在于Ruby驱动程序中。 中的是什么?是收藏吗? 中的是什么?

  • 我试图完全理解密码散列,以便能够向审计员解释它。 基于我对答案的搜索,我知道函数是的包装器。在阅读预定义常量的PHP手册时,我看到它使用作为默认整数值(基本上它使用算法来散列密码)。 让我困惑的是,变量如果省略,会生成一个随机salt,并且成本将设置为。如果我提供了更高的成本(例如:),由于我没有提供salt值,它还会生成随机salt吗?我在这里感到困惑的原因是,我没有忽略,而是提供了不同的成本。