首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制搜索结果项

限制搜索结果项
EN

Stack Overflow用户
提问于 2022-06-28 03:18:06
回答 1查看 103关注 0票数 1

我想优化我的分页搜索结果页面

例如,我有1亿的帖子要搜索。用户只需输入"a“。搜索所有这些都需要很长时间,因为我们使用SQL_CALC_FOUND_ROWS进行分页。

事实上,没有必要搜索所有的行(帖子),答案"1000+“对用户来说就足够了。所以我们需要在找到1000个结果后停止搜索。

我们希望向用户显示这样的信息:显示1000+结果的1-10页.第100页

如何在不失去分页功能的情况下做到这一点?

我当前的查询可能如下所示:

代码语言:javascript
复制
SELECT SQL_CALC_FOUND_ROWS xxx_posts.ID
FROM xxx_posts
WHERE 1=1
AND (((xxx_posts.post_title LIKE '%a%')
LIMIT 0, 10
EN

回答 1

Stack Overflow用户

发布于 2022-06-28 05:31:36

你的例子太冒险了,不可能加快速度。然而,在一般情况下..。

代码语言:javascript
复制
SELECT id
    FROM xxx_posts
    WHERE ...
    LIMIT 1000, 1;

如果您有一行,那么至少有1000行。

除非索引可以处理GROUP BY和那些子句,否则不要使用WHEREORDER BY。否则,它们将需要获取所有行,然后在进入LIMIT之前进行排序。

你的例子很危险..。使用带有初始通配符的LIKE不能使用索引。如果没有1000+匹配行,则检查整个表中的每个title,而不满足LIMIT 1000, 1。什么都救不了!

你能使用FULLTEXT索引吗?

还请参阅MariaDB的设置,以限制单个语句的执行时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72780382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档