是否可以在 VIEW 上创建全文索引?
如果是这样,在 VIEW 上给定两列 column1
和 column2
,完成此操作的 SQL 是什么?
我想这样做的原因是我有两个非常大的表,我需要对每个表上的单个列进行全文搜索并合并结果。结果需要作为一个单元订购。
建议?
编辑:这是我尝试创建一个 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
未被识别。
最佳答案
MySQL 不允许在 View 上使用任何形式的索引,只允许在它的基础表上使用。这是因为 MySQL 仅在您从 View 中进行选择时才具体化 View ,因为基础表可能一直在更改数据。如果您有一个返回 1000 万行的 View ,则您必须每次从中选择全文索引,这会花费很多时间。
如果您想要完整的索引功能,那么您不妨坚持使用您发布的 SQL 脚本,并手动(或 cronjob 脚本来)每晚更新两个表的全文索引(如果您需要,则每小时更新一次) '在那个高流量的市场)。
关于mysql - 在 VIEW 上创建全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307122/