【发布时间】:2015-05-02 04:32:29
【问题描述】:
一些很常见的搜索结果,例如分页,通常显示的是总页数、结果等...
两个例子:
Google - https://www.google.com.br/?gfe_rd=cr&ei=h4PzVLy3JMiU8QeE3ICYBQ&gws_rd=ssl#safe=off&q=test - 大约 26.7 亿条结果(0.39 秒)
Stackoverflow - https://stackoverflow.com/search?q=test - 1,561,211 个结果
例如,Google 假设这 26.7 亿条结果是由数据库找到的要计数的。就像在不影响性能的情况下计算具有许多结果的查询的总结果一样?这是什么魔法?
【问题讨论】:
-
您的问题是关于分页还是计数?这对我来说不是很清楚。需要记住的一件事:Google 不使用 SQL 数据库进行查询,因此在这里很难谈论 Google。与非 SQL 或内存数据库相比,Google 的引擎更好(但有自己的设计)。
-
全文搜索一般使用专门的全文搜索引擎,在普通SQL引擎之外实现(即使有些SQL数据库自带集成全文索引(这是在普通引擎之上实现的) )。
-
我知道了。在MySQL中肯定没有如何做到这一点?我们需要像 ElasticSearch 这样的东西吗?就像在追求 stackoverflow 的过程中所做的那样?也和 Elastisearch 一起使用?
-
ElasticSearch 是一种进行全文搜索的工具,是的!谷歌当然有自己的高性能实现。这种实现的功能是 Google 优势的原因之一。
标签: mysql performance count pagination