我想从数据库中的两个表中按 name1 或 name2 进行搜索。
重要提示:只有一些名称具有与之关联的辅助名称2。
表 n1 和 n2 如下:
table n1
|---------------*----------------*-----------------|
| id | name1 | n2_id |
|---------------*----------------*-----------------|
| 1 | Joseph | 1 |
| 2 | David | NULL |
| 3 | James | 2 |
|---------------*----------------*-----------------|
table n2
|---------------*----------------|
| id | name2 |
|---------------*----------------|
| 1 | Joe |
| 2 | Jim |
|---------------*----------------|
(我知道我可以在 n1 表中创建一个名称 2 字段,但这只是对需要此结构的更复杂系统的简化。)
我目前从表 n1 中选择如下:
SELECT id, name1, MATCH ( name1 ) AGAINST ( "+joe*") AS score
FROM n1
WHERE MATCH ( name1 ) AGAINST ( "+joe*" in boolean mode)
order by score desc;
这对于一个非常大的表非常有效。
但是,我想根据搜索字符串从 n1 和 n2 中选择 MATCHING name1 或 name2(如果存在),就好像这两个表是合并的一样。
问题是,当多个表中有不同的索引时,我遇到了按组合分数排序的选择效率问题。
这个问题不仅仅是关于如何构造 SELECT。它是关于如何以有效使用索引的方式构造 SELECT。(桌子很大)