За последние 24 часа нас посетили 22347 программистов и 1023 робота. Сейчас ищут 689 программистов ...

Как можно ускорить mysql запрос?

Тема в разделе "PHP и базы данных", создана пользователем Talrid, 4 апр 2022.

  1. Talrid

    Talrid Новичок

    С нами с:
    4 апр 2022
    Сообщения:
    1
    Симпатии:
    0
    В моей mysql базе есть таблица с 50-ю полями, записей в таблице 170тыс. Когда выбираю из базы данные, то запрос выполняется довольно медленно 1-3-5 сек. А нужно чтобы выполнялся максимально быстро насколько это возможно.
    Пример запроса:
    Код (Text):
    1. SELECT id, title FROM materials WHERE status ='1' AND cats REGEXP '<40>'
    Как видите, запрос всего 2х полей, а не всех.
    Проанализировав проблему, выявил, что на скорость сильно влияет наличие полей типа text (и возможно их заполненность), если их убрать из таблицы, то скорость запроса увеличивается. Если в таблице оставить только 1-2 поля, то скорость выполнения запроса моментальная.
    В связи с этим возникает вопрос: почему на скорость выполнения запроса влияют поля, которые даже не участвуют в запросе? Можно ли как-то ускорить запрос?
    Проверял на локальном сервере и также на хостинге, конфиг: PHP 7.2-7.4, MariaDB 10.2, x64, в PHP использую mysqli.
    Если заменить REGEXP на LIKE, то скорость выполнения запроса к mysql такая же.
     
  2. Slava Rozhnev

    Slava Rozhnev Новичок

    С нами с:
    6 сен 2021
    Сообщения:
    87
    Симпатии:
    26
    Адрес:
    https://phpize.online
    При использовании полей типа TEXT база данных не знает заранее размер поля и соответственно не может выделять место в оперативной памяти, поэтому все операц3ии используют диск. Из-за этого не следует использовать TEXT без крайней необходимости и использовать тьип VARCHAR(n)

    Online SQL playground
     
  3. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Поиск сильно замедляет регулярное выражение. Может использовать LIKE '%40%' ?