mysql group-by不返回全文搜索结果

jucafojl  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(363)

我有以下mysql架构:

CREATE TABLE IF NOT EXISTS `tag` (
   `id` SMALLINT UNSIGNED NOT NULL,
   `tag` VARCHAR(15) NOT NULL,
   FULLTEXT INDEX(`tag`),
   PRIMARY KEY (`id`,`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tag`(`id`,`tag`) VALUES
('1','motor'),
('2','motor');

我想从中选择行 tag 表分组依据 tag 列。我运行了以下命令:

SELECT COUNT(id),tag FROM tag
GROUP BY tag

预期结果:

COUNT(id) | tag
------------------
    2     | motor

实际结果: no rows returned 如果我移除 FullText 从表中索引,结果按预期返回。我不知道使用时出了什么问题 fulltextgroup 随着进一步的研究,问题似乎来自复合主键。如果切换到一列主键,查询将再次工作,但我需要为此表使用复合键,因为同一id可能有多个标记。
我创建了一个sql fiddle供您尝试:http://sqlfiddle.com/#!9/1f765d/1/0号

iszxjhcz

iszxjhcz1#

终于发现了问题。引擎在执行查询时有两个索引可供选择,结果根本不使用任何索引,也不返回任何结果。
很有可能是个虫子。在这种情况下 FORCE INDEX 作为一种解决方法很方便。
最后的工作指令是:

SELECT COUNT(id),tag FROM tag
FORCE INDEX(PRIMARY)
GROUP BY tag

这是对最新代码的篡改:http://sqlfiddle.com/#!9/a8568/21/0号
谢谢大家!

相关问题