记住用户名密码
导语:最近遇到一个千万级的数据库查询的问题,当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)
,这是说你必须先为每种情况创建一个全文搜索索引,然后才能使用它。
在使用全文搜索后,查询速度会有大幅的提高。
目前有 0 条留言 其中:访客:0 条, 博主:0 条