MySQL Select Query 17000 строк медленно - PullRequest
0 голосов
/ 21 октября 2019

Проблема в том, что когда на странице отображается около 17000 записей, это занимает много времени, и когда я пару раз открываю эту страницу в новых вкладках, они загружаются только при загрузке первой страницы.

Обычно это глупо, потому что веб-приложения должны работать в многопоточном режиме.

Я не понимаю, почему это так.

Я использую индексы, чтобы загружать вещи быстрее, и я думаю, что это ничего не приносит. Если я использую PHPMyAdmin для загрузки данных с загрузкой SELECT * FROM ... LIMIT 30000, это займет 10 минут, а затем произойдет ошибка сервера. Я не знаю, почему это так.

Как увеличить скорость вставки, чтения и записи данных и т. Д.?

На этой странице выбираются комментарии 2002 (наборы данных), и она уже медленная https://www.prodigy - официально.de / punity / questions / show? question = 11

Эта страница выбирает 17000 строк и не загружается ... https://www.prodigy -official.de / punity / questions / show? вопрос = 10

ПОЧЕМУ

Я использую InnoDB в качестве Engine.

Я использую виртуальную машину.

Информация:

http://prntscr.com/pm8e9j

1 Ответ

0 голосов
/ 22 октября 2019

Просматривая код, кажется, что вы отображаете вопрос, а также все его комментарии?

$question_id = $_GET['question'];
SELECT  id,username_id,question_id,comment,comment_date
    FROM  `user.comments`
    WHERE  `question_id` = $question_id
      AND  is_reply_from_comment_id = '0'
    ORDER BY  id 
foreach result
{
    SELECT  id,username_id,comment,comment_date
        FROM  `user.comments`
        WHERE  is_reply_from_comment_id = $comment_id
        ORDER BY  id 
}

Для здравомыслия ваших пользователей, вы должны наложить ограничение наколичество комментариев, отображаемых одновременно.

Замена INDEX(is_reply_from_comment_id) на INDEX(is_reply_from_comment_id, question_id) поможет первому SELECT, не повредив второму.

Вы понимаете, что схема ограничивает таблицу дотолько 32K строк? (Похоже, вы скоро достигнете этого предела.)

...