WordPress中如何使用Mysql的全文搜索进行千万级的数据查询?

导语:最近遇到一个千万级的数据库查询的问题,当mysql数据库的一个数据表记录条数达到千万级的时候,查询内容会导致异常缓慢,那么这时候,我们该怎么办?

千万级的数据查询优化

当数据表达到千万级的时候,我们必须对数据表进行优化,来达到提高查询速度的目的。对于一个普通的小站长,其实我们能用的手段没有几样,现在说说可以实现的普遍的优化方式。

  • 对数据表中的主要查询字段建立索引,以避免全表扫描。
  • 对数据表进行分区管理。
  • 对数据表使用memcached技术,将频繁的查询数据放入内存。
  • 对数据表使用全文检索技术。
  • 等等。

下面说说怎么来进行全文搜索。

创建全文搜索

对于mysql的数据表我们可以使用全文搜索,来提高查询速度,当然,你的mysql需要是ENGINE=MyISAM,也就是说数据表的引擎是MyISAM。mqsql只支持MyISAM的全文检索。

使用下的语句来执行为字段添加全文搜索索引。

alter TABLE table add fulltext index(field1,field2);

这时候,mysql就会开始为field1,field2字段建立全文搜索索引。对于一个千万级的数据量,估计创建索引需要2到3个小时,这是指本地测试环境下的mysql,你可以根据这样的环境来推测你的服务器环境所需的时间。

你也可以通过phpmyadmin的图形界面来创建全文搜索索引,进入表->结构,在每个字段的选项上就能看到 更多->全文搜索 的超链接,点击就能建立了。

使用全文搜索

当全文搜索索引建立后,我们就可以去使用它了,使用它也很简单,这里提供一个简单的例子,更详细的使用方法,你可以在谷歌或百度自行搜索。

select field1,field2,field3,field4 from `table` where match(field1,field2) against('linda');

注意,你刚刚建立的全文搜索索引是index(field1,field2),那么你在使用的时候必须是match(field1,field2)。如果使用match(field1)match(field2),那么它会提示这个fulltext不存在。

也就是说,你希望使用match(field1),那么你必须先建立index(field1),而不是使用开始创建的index(field1,field2),这是说你必须先为每种情况创建一个全文搜索索引,然后才能使用它。

在使用全文搜索后,查询速度会有大幅的提高。

结束

你学会了吗?如果是千万级的数据记录,那么全文搜索可以帮助你提高查询速度,如果你只是普通数量的数据记录那一般的索引就好。