gpt4 book ai didi

php - 如何使用 SQL 查询处理大量行并有效地仅获取少量数据?

转载 作者:行者123 更新时间:2023-11-29 07:33:10 24 4
gpt4 key购买 nike

我正在用 PHP 编写一个网站,该网站将包含用户将在该网站上发布的大量消息(例如 100.000 、 200.000 或更多)。问题是,消息将通过其 ID 存储在名为“site_messages”的表中。这意味着,所有消息不是按发帖者分组,而是按 ID 分组。如果我想获取用户“foo”发布的消息,我必须查询很多行,我认为它会变得非常慢。或者我想按帖子主题获取消息(是的,它也会包含帖子主题列,也许还需要添加更多列),我必须再次查询所有表,不幸的是,它的效率会降低。对此有什么快速的解决方案吗?我正在使用 PHP 和 MySQL(以及 PHPMyAdmin)。

编辑:例如,我的表格如下所示:

<小时/>

消息ID:1

MessageContent(Varchar,这是用户发布的消息):嗨,我喜欢这个网站。再见!

MessagePoster(Varchar):crazyuser

消息发布日期:2009 年 12 月 12 日

MessagePostedIn(Varchar,这是帖子主题):如何制作披萨

<小时/>

消息ID:2

MessageContent(Varchar):这个网站真的很糟糕。

MessagePoster(Varchar):top_lel

消息发布日期:2009 年 12 月 12 日

MessagePostedIn(Varchar):您好,我有一个问题!

<小时/>

消息ID:3

MessageContent(Varchar):谁是该网站的管理员?

MessagePoster(Varchar):creepy2000

消息发布日期:1/13/10

MessagePostedIn(Varchar):这个网站很无聊。

<小时/>

等...

最佳答案

这就是数据库(尤其是关系数据库)的构建目的! MySql 和其他数据库使用索引之类的东西来帮助您以最有效的方式访问所需的行。您将能够编写诸如 select * from site_messages where subject like "News%"order by entryDateTime desc limit 10 这样的查询来查找以“News”开头的最新 10 条消息,或者 select *从 site_messages, user where user.userid='foo' 和 site_messages.fk_user=user.id 查找某个用户的所有帖子,你会发现它的性能非常好。对于这些,您可能(除其他外)有主题列的索引和 fk_user 列的索引。

致力于拥有良好的表结构(数据模型)。当然,如果您遇到问题,您可以研究数据库性能和解释计划的主题来提供帮助。

是的,对于您想要的每组列,您将再次查询该表。将查询视为一组行。避免通过连接发送大量行。正如其他评论者所建议的,如果没有有关您的表格的更多详细信息,我们无法提供更多帮助。

关于php - 如何使用 SQL 查询处理大量行并有效地仅获取少量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31886800/

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