Как ускорить время SELECT MySQL?

Существует база с 1 таблицей на 11 млн строк. Поиск выполняется по 1 столбцу varchar(128). Стоит задача осуществлять поиск не более чем за 1 секунду, сейчас это значение намного выше, при чем ресурсы сервера при поиске используются по минимуму (не более 30%). Возможно ли реализовать эту задачу и если да, то какие есть методы?

EXPLAIN SELECT * FROM `main` WHERE `partname` LIKE "%поисковой запрос%" LIMIT 100

5fbeadc9a3a73263357301.png

По железу: 2 ядра, 2Гб памяти и SSD - это все что мне удалось узнать
5fbeaca02ceff480986005.png

my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега PHP
Во-первых не позорься, убери тег big data. 11 лямов - это не бигдата, а кошкины слёзки.
Во-вторых, надо учиться задавать вопросы.
Не вопрос вида "доктор, у меня рука болит, как сделать чтобы не болела", а подробно излагать, что за поиск, что за запрос, что за данные, что за столбец, есть ли индекс, что показывает explain.

В текущем же виде ответ только один - помазать зеленкой добавить индекс
если индекс есть, и поиск идет по полному совпадению, то смотреть, влезает ли индекс в память
Если поиск идет по частичному совпадению - то выносить его в отдельный сервис, sphinx/elastic
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Возможно ли реализовать эту задачу и если да, то какие есть методы?

Шлите нам
- параметры железа
- explain вашего запроса
- my.cnf
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы