Создать полнотекстовый индекс на VIEW - PullRequest
4 голосов
/ 15 марта 2011

Можно ли создать полнотекстовый индекс в VIEW?

Если это так, учитывая два столбца column1 и column2 в VIEW, что такое SQL для этого?

Причина, по которой я хотел бы сделать это, состоит в том, что у меня есть две очень большие таблицы, где мне нужно выполнить FULLTEXT-поиск по одному столбцу в каждой таблице и объединить результаты. Результаты необходимо заказывать как единое целое.

Предложения

РЕДАКТИРОВАТЬ: Это была моя попытка создать UNION и упорядочить по каждой оценки операторов.

(SELECT a_name AS name, MATCH(a_name) AGAINST('$keyword') as ascore 
     FROM a WHERE MATCH a_name AGAINST('$keyword'))
UNION  
(SELECT s_name AS name,MATCH(s_name) AGAINST('$keyword') as sscore 
     FROM s WHERE MATCH s_name AGAINST('$keyword'))
ORDER BY (ascore + sscore) ASC

sscore не был распознан.

1 Ответ

2 голосов
/ 15 марта 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...