mysql - самый быстрый поиск

0

Ну, я создал поле поиска для своего сайта. Когда пользователь помещает свои данные, я использую их для поиска в базе данных в определенных столбцах таблицы.

Я использую этот код:

$result = mysqli_query($conn, "SELECT * FROM table1 WHERE
column1 LIKE '%{$search}%' OR 
column2 LIKE '%{$search}%' OR
column3 LIKE '%{$search}%' OR
column4 LIKE '%{$search}%' OR
column5 LIKE '%{$search}%' OR .....");

Теперь, когда я все больше и больше информации в поиске базы данных замедляется.

Я знаю, что когда я поместил много данных в базу данных, он будет замедляться, но есть ли способ поиска быстрее?

  • 1
    Все столбцы, которые нужно найти, должны быть проиндексированы. Это ускорит поиск, но замедлит вставки и обновления.
Показать ещё 4 комментария
Теги:
search

2 ответа

1
Лучший ответ

Вы можете использовать LIMIT и OFFSET.

Вместо поиска по всем записям вы можете сделать это, разделив поиск. Это может быть достигнуто путем разбивки на страницы или бесконечного метода прокрутки

Например, используйте разбивку на страницы. И мы будем использовать 10 записей для каждой страницы.

numOffset = numRecords(10) * (page - 1);
numLimit = numRecords(10);


SELECT * from table1 WHERE column1 LIKE '%asd%' LIMIT <numLimit> OFFSET <numOffset>;

OFFSET определяет отправную точку для вашего результата запроса.

LIMIT определяет, сколько записей мы хотим запросить, в данном случае 10;

Если мы находимся на странице 3, это даст нам СМЕЩЕНИЕ из 20. Мы хотим начать с 20 на странице 3, потому что меньшие записи уже были "запрошены" со страниц 1 и 2. Окончательный запрос даст нам записи, начиная на 20, плюс 10 записей из-за LIMIT.

0

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

если вы используете phpMyAdmin, вы можете открыть структуру таблицы и увидеть ее посередине.

Изображение 174551

  • 0
    И как я это сделаю?
  • 0
    какой браузер sql вы использовали?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню