私が記事を取得するには、このスクリプトを持っているを殺す:の最適化SQLクエリ、大きなテーブル - クエリは、サーバー
$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()は非常に効率が悪く、使用しないことを強くお勧めします。 –
こんにちはKevin、どうすればスクリプトを変更できますか? – Dan
これは95%のSQLなので、私はこの質問を編集し、再タグ付けしています。 PHPのビットを削除することを検討してください。ほとんどの質問とは無関係なので、代わりにSQLの質問として提示してください。 –