kyl*_*lex 6 mysql full-text-search view multiple-tables
是否可以在 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
Run Code Online (Sandbox Code Playgroud)
sscore 不被认可。
MySQL 不允许在视图上建立任何形式的索引,只允许在其基础表上建立索引。这样做的原因是,由于底层表可能一直在更改数据,MySQL 仅在您从中进行选择时才具体化视图。如果您有一个返回 1000 万行的视图,则每次从中进行选择时都必须对其应用全文索引,这会花费大量时间。
如果您想要完整的索引功能,那么您不妨坚持使用您发布的 SQL 脚本,并手动(或使用 cronjob 脚本)每晚(或者每小时,如果您在那个高流量市场)。
| 归档时间: |
|
| 查看次数: |
8430 次 |
| 最近记录: |