mysql - 在 VIEW 上创建全文索引

标签 mysql view full-text-search multiple-tables

是否可以在 VIEW 上创建全文索引?

如果是这样,在 VIEW 上给定两列 column1column2,完成此操作的 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/

相关文章:

MySQL查询到多对多查询

java - 无法在与 findViewById(R.id.textView) 同一行中使用 setText() 方法

Android TextInputEditText,inputType = textPassword,我看不到圆点

android - 将 View 本身移动到动画的结束位置

java - 如何在java中动态连接mysql数据库并显示所选数据库的表、属性?

mysql - 选择 SQL 查询 FROM 表,选择使用该查询?

mysql - 区分重音的全文搜索 (MySQL)

mysql - 给定一串单词 : How to find every word (case insensitive) in a varchar(1000) column in MySQL ignoring punctuation?

SOLR - 在模式中使用单个文本字段进行全文搜索

mysql - 如何使用 mysql 查询获取带有标题、内容和特色图像的 WordPress 帖子