Sphinx-关于Sphinx与mysql索引性能对比,为什么sphinx索引性能要比直接用mysql索引低不少呢

发布于 2016-11-29 03:23:12 字数 376 浏览 1483 评论 1

需求描述:
一张数据量过千万的表,id为主key,username建立了mysql的索引。
我使用sphinx对该表也建立了全文索引,索引字段为username,属性字段为nickname与phone。

测试SELECT SQL_NO_CACHE * FROM table WHERE username = 'xxxx';
与用sphinx进行$sc->Query('xxxxx', '*');
测试结果sphinx要比mysql查询慢不少,请教这是为什么。
还有我使用随机username查询sphinx发现有较大的几率非常慢,每次查询大概需要4s,怀疑是内存过小,但是网上很多测试也都是基于老机器。我这里是单核2g内存,mysql与sphinx部署在一起的环境。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-10-06 14:30:50

Sphinx是用来补充mysql在全文检索方面的不足的,它的主要功能是作为一个全文检索引擎而
不是数据库引擎.
所以它在索引字段的查询上肯定比不过mysql的, 如果这样也比mysql快那mysql的开发人员就太没面子了.

全文检索就是类似 like 这样的查询,你把='xxxx'改成like '%xxxx%'就可以看出sphinx的作用了.

像name这种字段,比较短,还不能充分展现出全文检索的威力. 更一般的来讲,全文检索的应用场合是比较长的字段, 比如说blog的内容字段.我要查询blog内容中有'苹果'这两个字的记录,用like查询直接就死掉了.这才是全文检索的用武之地.

而sphinx的这个索引,只是在既需要全文检索又需要其他查询条件时才一起用,像你这种只是
name='xxx'的查询千万不要用sphinx的检索,这样只会适得其反.

作为一个比较简单的判定方式, 如果查询中没有like这样的查询条件就不要用sphinx的查询
~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文