gpt4 book ai didi

mysql - mysql中的快速分页?

转载 作者:行者123 更新时间:2023-11-29 06:53:38 25 4
gpt4 key购买 nike

我记得做 where ... limit 100000 200 很慢,因为 mysql 仍然扫描前 100000 行。行数超过 100 万需要很多秒(不是毫秒)。不管怎样,我正处于网站的设计阶段。我想使用多个标签进行搜索,例如 cpp sockets

我正在尝试进行快速搜索。我认为我的选择是不使用 page # 而使用时间戳(最有可能作为 64 位 int)或具有最低/最高行 #。但我认为我可能需要更进一步?

我想我需要一个查找表,所以如果帖子 123456789 有标签 cpp socket howto,我会将该帖子插入查找表(lookupid、tagid、postid)中,并在 tagid 上有一个索引。找出哪个计数最低(我是使用 count(*) 还是更新某处保存当前计数的行?)然后我可以使用类似

的语句进行搜索
select postid from Post p join
(select postid from tag_lookup where tag=@tag_with_lowest_count and post_id<@post_id_limit)
as t2 on p.id=t2.postid
//i'm not sure how to write a where that checks if a post has every tag in a list.
where @array_length_as_a_param == (select count(*) from tag where tag.postid=p.postid
and in @array //dapper probably handles this for me. Unsure if this is connrect

我没有数据、表格等任何东西,所以我还不能使用explain(我读起来也不太好)。我在集思广益。所以我会使用 > 或 < 取决于我是否正在做下一页/上一页并使用 post_id 而不是使用页码。

有谁能想出一种对随机标签进行快速页面查找的好方法吗?

最佳答案

  1. 使用 select count([your-primary-key]) 代替 *
  2. 在标签和帖子中对帖子 ID 使用索引。
  3. 在您的 where 子句中使用连接而不是测试是否相等。

这只是粗略的一瞥。完成这三项操作后,如果性能仍然不够好,请发布查询解释的结果,我很乐意查看。

关于mysql - mysql中的快速分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com