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

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:924篇文章
  • 发布时间:2021年03月28日 10:28:52
  • 所属分类:Mysql优化, PHP+MySql
  • 阅读次数:2039次阅读
  • 标签:

导语:最近遇到一个千万级的数据库查询的问题,当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),这是说你必须先为每种情况创建一个全文搜索索引,然后才能使用它。

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

顶一下
(1)
100%
订阅 回复
踩一下
(0)
0%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!