mysql - 全文 : this query very slow

标签 mysql full-text-search

我正在使用这个查询,但不幸的是它运行缓慢:

SELECT *,
    (MATCH(`title`) AGAINST ('$word' IN BOOLEAN MODE) * 2
    + MATCH(`content`) AGAINST ('$word' IN BOOLEAN MODE) * 2
    + MATCH(`url`) AGAINST ('$word' IN BOOLEAN MODE) * 1.1
    + MATCH(`desc`) AGAINST ('$word' IN BOOLEAN MODE) * 1.2) * `like`
    AS score
FROM `data`
WHERE MATCH(`content`,`desc`,`title`,`url`) AGAINST ('$word' IN BOOLEAN MODE)
ORDER BY `score` DESC LIMIT 1000

数据库的结果是15000。这意味着将执行15000条记录,但查询需要大约25秒的时间。我正在使用 PDO。

最佳答案

您将需要 FULLTEXT 索引,否则 DBMS 每次都需要搜索整个表。这确实减慢了记录的插入速度。请注意,对 4 列的全文搜索总是相对较慢。

CREATE FULLTEXT INDEX indexTitle ON `data` (title)
CREATE FULLTEXT INDEX indexContent ON `data` (content)
CREATE FULLTEXT INDEX indexURL ON `data` (url)
CREATE FULLTEXT INDEX indexDesc ON `data` (desc)
CREATE FULLTEXT INDEX combinedIndex ON `data` (content, desc, title, url)

关于mysql - 全文 : this query very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164783/

相关文章:

Java小程序无法通过浏览器访问mysql

MySQL 让它识别 0 小于 A in case 语句

doctrine-orm - Doctrine2 - 使用全文和 MyIsam

php - 在表格中查找最流行的字符串

Mysql union 如何将返回的 3 行分组为单行

mysql - 如何在 Yii 中添加日志记录?

c# - 在 C# 中寻找用于超大型项目的文本文件搜索算法

MySQL 全文 MATCH AGAINST 不适用于复数

php - Wordpress 使用 MySQL 全文搜索?

php - DELETE FROM - MYSQL 数据库上的 foreach 循环