【发布时间】:2015-12-19 05:50:22
【问题描述】:
我有一个包含 100 万条记录的表,并希望应用更快的方法来针对任何搜索查询获取记录。因为我不擅长 mysql 全文搜索。
我做了以下测试:
- 最初我在单个列上应用了
MATCH AGAINS,它快速返回结果。 - 其次,我在两列上应用了
MATCH AGAINS,返回速度很慢。 - 然后我进行了列优化,将两列合二为一,并在计算列上应用了
MATCH AGAINS。它第一次返回非常慢,但在第二次尝试使用相同的搜索词时返回相当快。
我的查询是否有任何问题,我应该如何通过更多优化来修改它?
select name, meaning, m.gender, m.similar
FROM
NAMES n
INNER JOIN meta m ON m.nameid = n.id
WHERE MATCH (nameandmeaning) AGAINST ('searchterm*' IN BOOLEAN MODE)
AND meaning IS NOT NULL
ORDER BY LENGTH(m.similar) DESC
LIMIT 0 , 10;
注意:nameandmeaning 是name, meaning 的组合。
我的表结构如下:
CREATE TABLE NAMES (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
meaning VARCHAR(2000) DEFAULT NULL,
nameandmeaning VARCHAR(2000) DEFAULT NULL,
PRIMARY KEY (id),
FULLTEXT KEY constains_name(name,meaning),
FULLTEXT KEY contains_namemeaing (nameandmeaning)
) ENGINE=MYISAM AUTO_INCREMENT=67846 DEFAULT CHARSET=latin1;
【问题讨论】:
-
请张贴从表中创建
标签: mysql performance optimization full-text-search