MYSQL Routine在临时表上进行全文搜索。性能问题

时间:2013-08-12 15:22:39

标签: mysql performance full-text-search full-text-indexing routines

我有一个名为“Item”的表,它是INNODB并具有以下布局:

ID 说明 - >全文索引 DATE

全文索引设置为索引1个字符的单词,遗憾的是我无法绕过此要求。当用户搜索较大的单词(例如“item 59929”)时,以下例程运行正常,但是某些情况会导致搜索类似“item 1 a 22 4 c”,其中空格必须保持这种方式。执行这些1个字符搜索时的数据库CRAWLS。在日常工作中处理这个问题的最佳方法是什么?我确实遇到过障碍,因为看起来你无法使用innodb引擎在临时表上创建全文索引,他们必须通过myisam。以下是我目前使用的简化版本:

drop temporary table if exists tmpFilter;

CREATE TEMPORARY TABLE tmpFilter(
ID INT,
Description Varchar(320),
Date datetime,
PRIMARY KEY(ID)) ENGINE=MYISAM; --  HAS TO BE MY ISAM as of 5.6 FULL TEXT ON TEMP INNODB IS NOT ALLOWED

ALTER TABLE tmpFilter ADD FULLTEXT INDEX(description);  -- ADD FULL TEXT
ALTER TABLE tmpFilter DISABLE KEYS;

INSERT INTO tmpFilter
SELECT ID, Description, Date
FROM item
WHERE date > DATE_SUB(NOW(), INTERVAL 15 MONTH)
    AND description LIKE CONCAT('%item 1 2 a 4%');
    AND MATCH (description) AGAINST ('"1 2 a 4" @30' in boolean mode);



ALTER TABLE tmpFilter ENABLE KEYS; 

SELECT * 
FROM tmpFILTER
WHERE MATCH (description) AGAINST ('+item +1 +2 +a +4' in boolean mode);

我尝试了一些不同的东西,但它们完全没有区别。提前谢谢!

0 个答案:

没有答案