В моей mysql базе есть таблица с 50-ю полями, записей в таблице 170тыс. Когда выбираю из базы данные, то запрос выполняется довольно медленно 1-3-5 сек. А нужно чтобы выполнялся максимально быстро насколько это возможно. Пример запроса: Код (Text): 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 такая же.
При использовании полей типа TEXT база данных не знает заранее размер поля и соответственно не может выделять место в оперативной памяти, поэтому все операц3ии используют диск. Из-за этого не следует использовать TEXT без крайней необходимости и использовать тьип VARCHAR(n) Online SQL playground