MYSQL GROUP BY не возвращает результатов с ПОИСКОМ FULLTEXT

0

У меня есть следующая схема 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 индекс FullText из таблицы, результаты вернутся, как ожидалось. Я не знаю, что происходит неправильно при использовании fulltext с group

Обновление. С дальнейшими исследованиями проблема, похоже, связана с составным первичным ключом. Если я переключусь на одноколоночный первичный ключ, запрос снова будет работать, но мне нужно использовать составной ключ для этой таблицы, так как один и тот же идентификатор может иметь несколько тегов.

Я создал скрипт SQL для вас: http://sqlfiddle.com/#!9/1f765d/1/0

  • 0
    это было странно bcuz это отлично работает по id
  • 0
    Эй, я думаю, что невозможно использовать полнотекстовый ключ для группировки по. Укажите ваше поле тега как обычный ключ отдельно, тогда оно будет работать. Посмотрите на план выполнения, он пытается сделать группу с помощью полнотекстового ключа. Я не думаю, что это будет возможно: P
Показать ещё 8 комментариев
Теги:
group-by
full-text-indexing

1 ответ

0
Лучший ответ

Наконец, обнаружил проблему. У двигателя есть 2 индекса на выбор при выполнении запроса, который в конечном итоге не используется вообще и не возвращает никаких результатов.

Это очень вероятно, что это ошибка. Это случай, когда FORCE INDEX пригодится в качестве обходного пути.

Итак, окончательная рабочая команда:

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

И это скрипка с обновленным кодом: http://sqlfiddle.com/#!9/a8568/21/0

Спасибо всем!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню