gpt4 book ai didi

mysql - 数据库查询永远加载

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:08 24 4
gpt4 key购买 nike

我有一个正在尝试创建的查询,但是当查询处于事件状态时,页面需要很长时间才能加载...

我想做的是:

我有一个视频网站,当你点击一个视频时,你会被重定向到 VIDEO 页面,在那里你可以看到视频,url 结构是这样的:

www.site.com/VIDEO_CATEGORY_NAME/VIDEO_ID.html

video_category 和 video_id 在不同的表中。

我想要实现的是:建立一个链接,这样当用户点击时,它将被重定向到一个 RANDOM 视频页面(随机视频)。

这是我要编写的查询:

$db = JFactory::getDBO();
$query = "SELECT distinct a.*,b.category FROM #__hdflv_upload a LEFT JOIN #__hdflv_category b on a.playlistid=b.id or a.playlistid=b.parent_id WHERE a.published='1' and b.published='1' and b.id=" . $videocategory1 . " and a.id != " .$videoid1 ." order by rand()";
$db->setQuery($query);
$result = $db->loadResult();

和链接:

<a href="/player/<?php echo $result; ?>.html">random video</a>

当查询在页面上时,加载页面需要很长时间...有人可以帮我一下吗?谢谢

最佳答案

要避免在联接的 ON 子句中使用 OR,请尝试使用 UNION。

SELECT a.*, b.category 
FROM #__hdflv_upload a
INNER JOIN #__hdflv_category b
ON a.playlistid=b.id
WHERE a.published='1' AND b.published='1'
AND b.id=" . $videocategory1 . "
AND a.id != " .$videoid1 ."
UNION
SELECT a.*, b.category
FROM #__hdflv_upload a
INNER JOIN #__hdflv_category b
ON a.playlistid=b.parent_id
WHERE a.published='1' AND b.published='1'
AND b.id=" . $videocategory1 . "
AND a.id != " .$videoid1 ."
ORDER BY RAND()

UNION 还会删除重复的记录,因此使 DISTINCT 变得无关紧要。

请注意,ORDER BY RAND() 可能效率很低。有更有效的解决方案,但就此提出建议需要更多地了解您的数据(例如,表声明、id 字段是否连续等)。

关于mysql - 数据库查询永远加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23829025/

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