【发布时间】:2015-09-14 19:04:08
【问题描述】:
我需要在 English dictionary(大约 275,000 个关键字)中搜索文本(大约 500 个单词)来检测非英语单词,而现在我使用的查询并没有真正优化,需要超过 10 个执行秒数(有一个words 表和一个texts 表):
SELECT word FROM words WHERE 'The quick brown fox jumps over the lazy dog' LIKE CONCAT( '%', word, '%' );
从here得到这个想法。
我已经将word 字段设置为索引,并看到了一些人们将文本存储在数据库中或将其直接放入查询的示例。
其他示例显示人们使用 FULLTEXT 搜索虽然有 300k 字我不认为 FULLTEXT 会工作,我想用逻辑搜索 +brown +lazy -apple 很好,但就我而言,我不需要太多逻辑。
Another example 我见过的是将单词与IN (...) 子句连接起来,尽管有 500m 个关键字,但查询会非常长。
有什么想法吗?
现在文本被保存为text 字段,单词在 InnoDB 中以utf8_unicode_ci 编码保存为varchar(50),我听说 InnoDB 很慢,所以我可以使用 MyISAM 或任何其他。我正在使用 MySQL 5.5,但如果有帮助,我可以更新到 5.6。
【问题讨论】:
-
一定要用mysql做吗?
-
用于 PHP/MySQL 网站