Я работал бы со слишком многими шаблонами, чем ни одним вообще. Однако надлежащий баланс является, конечно, целью.
DESCRIBE
выглядит великолепно, простой однострочный.
Поскольку вы используете только одну таблицу в своем запросе, она не может быть ничем иным, кроме однострочника.
Однако ваш запрос не использует индекс FULLTEXT
.
Чтобы индекс можно было использовать, вам следует немного переписать запрос:
SELECT *
FROM sqinquiries_inquiry
WHERE MATCH (names, emails) AGAINST ('smith' IN BOOLEAN MODE)
ORDER BY
id DESC
LIMIT 100
MATCH
использует индекс, только если вы сопоставляете точный набор столбцов, для которых определен индекс.
Итак, ваш запрос использует сканирование индекса по id
: Использование индекса; Использование where
в самом конце вашего DESCRIBE
.
Отправка данных
вводит в заблуждение: на самом деле это время, прошедшее между окончанием предыдущей операции и концом текущей операции .
Например, я только что выполнил этот запрос:
SET profiling = 1;
SELECT *
FROM t_source
WHERE id + 1 = 999999;
SHOW PROFILE FOR QUERY 39;
, который вернул одну строку и этот профиль:
Я думаю, вы передаете много данных при медленном сетевом соединении.
Вместо select * выбирайте только те столбцы, которые вам действительно нужны.
Если ваша таблица содержит большие текстовые поля, которые вы хотите отобразить в результате, вы можете использовать подстроку для передачи только первых нескольких символов / слов текста.
Некоторые клиенты поддерживают сжатие пакетов результатов. Может, ты хочешь взглянуть на это.