php中文网

如何用索引表优化 MySQL 千万级数据的模糊搜索?

php中文网

如何优化 mysql 千万数据量的模糊搜索

对于包含千万数据量的 mysql 数据库中模糊搜索的性能优化,一个简单的想法是创建类似下表的索引:

索引表

| 当前词 | 下一词 | 原记录主键 id |
|---|---|---|
| mysql | 一 | 1 |
| 一 | 千 | 1 |
| 千 | 万 | 1 |
| 万 | 的 | 1 |
| ... | ... | ... |
| 模 | 糊 | 1 |
| 糊 | 搜 | 1 |
| 搜 | 索 | 1 |
| 索 | null | 1 |

以此方式,我们可以在该索引表中高效地搜索“模糊搜索”,使用如下 sql 查询:

SELECT 原记录主键ID
FROM (SELECT 原记录主键ID FROM 索引表 WHERE 当前词 = '模' AND 下一词 = '糊')
JOIN (SELECT 原记录主键ID FROM 索引表 WHERE 当前词 = '糊' AND 下一词 = '搜') USING(原记录主键ID)
JOIN (SELECT 原记录主键ID FROM 索引表 WHERE 当前词 = '搜' AND 下一词 = '索') USING(原记录主键ID)
JOIN (SELECT 原记录主键ID FROM 索引表 WHERE 当前词 = '索' AND 下一词 IS NULL) USING(原记录主键ID)

这种方法可以有效地缩小搜索范围,从而提高模糊搜索的性能,在秒级内完成搜索。

以上就是如何用索引表优化 MySQL 千万级数据的模糊搜索?的详细内容,更多请关注php中文网其它相关文章!