我想在我的网页中进行全文搜索。我需要分页进行搜索。我的数据库每张表有50,000+行。我已经改变了我的表,并使其(title,content,date)成为索引。该表始终处于更新状态,仍然有一个id自动增加的列。而最新date的总是在表格的末尾。
(title,content,date)
id
date
date varchar(10) title text content text
但整个查询时间将花费1.5+ seconds。我通过Google搜索了许多文章,有的文章写道,只有限制Index字段字长才能帮助更快地进行搜索。但作为一种text类型,它can not会像这样改变一定的长度(我尝试过ALTER TABLE table_1 CHANGE标题`titleTEXT(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL`,不起作用)
1.5+ seconds
Index
text
can not
ALTER TABLE table_1 CHANGE
`title
date varchar(10) title text(500) content text(1000)
因此,除了Sphinx第三方脚本。如何仅使用sql优化全文搜索?查询代码在这里:
Sphinx
(SELECT title,content,date FROM table_1 WHERE MATCH (title,content,date) AGAINST ('+$Search' IN BOOLEAN MODE)) UNION (SELECT title,content,date FROM table_2 WHERE MATCH (title,content,date) AGAINST ('+$Search' IN BOOLEAN MODE)) Order By date DESC
谢谢。
根据问题的后续注释,您在列上拥有btree索引,而不是全文本索引。
对于针对搜索的匹配(标题,内容),您需要:
CREATE FULLTEXT INDEX index_name ON tbl_name (title,content);
我不确定它是否会接受其中的日期字段(后者可能根本不相关)。