我有一个包含几列的表格,例如a
, b
, c
,d
应该是可搜索的。当我需要a, b, c
单独搜索d
(反之亦然)时,问题就出现了。AFAIK,没有办法在所有列上使用一个复合全文索引来实现这一点,所以我创建了两个单独的索引,如下所示:
CREATE FULLTEXT INDEX idx1 ON content (a, b, c);
CREATE FULLTEXT INDEX idx2 ON content (d);
Run Code Online (Sandbox Code Playgroud)
现在我可以成功搜索第一个和第二个。对于他们两个,我将使用以下命令:
SELECT * FROM content
WHERE MATCH(a, b, c) AGAINST ('keyword')
AND MATCH(d) AGAINST ('keyword');
Run Code Online (Sandbox Code Playgroud)
explain
告诉我这个:
+----+-------------+---------+----------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+----------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | content | fulltext | …
Run Code Online (Sandbox Code Playgroud)