【发布时间】:2011-08-09 16:58:19
【问题描述】:
我有这个脚本来获取帖子:
$totalrows = 60;
$sql = "SELECT
posts.Tags as tags,
posts.OwnerUserId as postsid,
posts.Id as postid,
posts.Body as body,
posts.Title as title,
users.Id as userid,
users.DisplayName as usersname
FROM posts
JOIN users ON posts.OwnerUserId = users.Id
JOIN (select posts.id from posts where posts.title != '' order by rand() asc limit " . $totalrows .") AS tmp_result
ON (posts.Id = tmp_result.Id)";
$r = mysql_query($sql) or die(mysql_error());
问题是服务器死机,需要重启,mysql文件很大。是什么导致服务器冻结?如何优化上述查询?
【问题讨论】:
-
你说先生,我感觉很特别。你检查过表的索引等等吗?您是否试图一次阅读整个表格?另外,ORDER BY RAND() 效率非常低,我强烈建议不要使用它。
-
凯文您好,那我该如何更改脚本?
-
我正在编辑和重新标记这个问题,因为它是 95% SQL。考虑删除 PHP 位,因为它们与问题几乎完全无关,并将其作为 SQL 问题呈现。
-
MYSQL中有没有类似Oracle HINTS的东西???通常我们使用 HINT 来优化指定索引和搜索逻辑等的查询。
标签: php sql optimization