gpt4 book ai didi

mysql - 多列上的全文索引如何工作?

转载 作者:IT老高 更新时间:2023-10-29 00:01:15 27 4
gpt4 key购买 nike

在 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) 上的复合索引才能使用它 (SELECT col1, col2 ...)。如果您要调用 col2,它不会使用索引。

关于mysql - 多列上的全文索引如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com