首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提高SQL查询的效率

提高SQL查询的效率
EN

Stack Overflow用户
提问于 2012-09-17 01:24:06
回答 4查看 142关注 0票数 0

我有一个可以工作的查询,但它至少需要3秒钟才能运行,所以我认为它可能会更快。它用于填充新线程的列表,并显示每个线程中有多少未读的帖子。在将查询字符串放入$db->query_read()之前,我生成了查询字符串。为了仅从有效论坛获取结果,$ids是一个字符串,其中最多包含50个用逗号分隔的值。

userthreadviews表已经存在了一周,其中大约有9,500行。我不确定我是否需要设置一个cron作业来定期清除超过一周的线程视图,或者我是否可以让它增长。

以下是当前的查询:

代码语言:javascript
复制
SELECT 
    `thread`.`title` AS 'r_title', 
    `thread`.`threadid` AS 'r_threadid', 
    `thread`.`forumid` AS 'r_forumid', 
    `thread`.`lastposter` AS 'r_lastposter', 
    `thread`.`lastposterid` AS 'r_lastposterid', 
    `forum`.`title` AS 'f_title', 
    `thread`.`replycount` AS 'r_replycount', 
    `thread`.`lastpost` AS 'r_lastpost', 
    `userthreadviews`.`replycount` AS 'u_replycount', 
    `userthreadviews`.`id` AS 'u_id',
    `thread`.`postusername` AS 'r_postusername', 
    `thread`.`postuserid` AS 'r_postuserid' 
FROM 
    `thread` 
INNER JOIN 
    `forum` 
    ON (`thread`.`forumid` = `forum`.`forumid`) 
LEFT JOIN 
    (`userthreadviews`) 
    ON (`thread`.`threadid` = `userthreadviews`.`threadid` 
    AND `userthreadviews`.`userid`=$userid) 
WHERE 
    `thread`.`forumid` IN($ids) 
    AND `thread`.`visible`=1 
    AND `thread`.`lastpost`> time() - 604800
ORDER BY `thread`.`lastpost` DESC LIMIT 0, 30

另一个连接post表的查询(只显示用户发布的线程)的速度实际上是原来的两倍,所以我认为这里一定有一些可以修改的东西来加快速度。有没有人能给我一些建议?

编辑:对不起,我把解释放在了备用查询的前面。下面是正确的输出:根据请求,下面是由EXPLAIN SELECT生成的输出:

EN

Stack Overflow用户

发布于 2012-09-17 01:27:44

如果表未编制索引,请尝试为表forumid编制索引

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12449026

复制
相关文章

相似问题

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