Помогите оптимизировать запрос в MySQL

201
30 марта 2019, 05:30

Есть запрос $query=mysqli_query($connect, "SELECT * FROM lvl_base WHERE steam LIKE '$rank'"); который в последующем обрабатывается. 5 таких запросов на одной странице в таблици размером от 7тыс. до 15тыс. записей, грузят пустую страницу 8-15 секунд. Как оптимизировать запрос?

Answer 1
  1. Используйте индексы.
  2. В вашем случае steam LIKE = '$rank' эквивалентно выражению steam = '$rank'. Оператор = сравнивает строку целиком, а оператор LIKE побуквенно каждый символ, поэтому в целом советую в данном случае использовать оператор =.
  3. Судя по всему 5 раз у вас запрос выполняется просто с различными значениями $rank, поэтому лучше в данном случае выполнить 1 запрос вместо 5 используя оператор IN, например: WHERE steam IN ('$rank1', '$rank2', '$rank3', ...) либо используя оператор OR, например: WHERE (steam = '$rank1') OR (steam = '$rank2') OR (steam = '$rank3') OR ...
  4. Не используйте для выборки SELECT * FROM ..., возможно у вас в БД лежат большие данные в каждой строке. Используйте для выборки только нужные поля, например SELECT id, name ... FROM ...
  5. Используйте LIMIT ... OFFSET ... - ограничивайте выборку, делайте её постраничной
  6. Размер таблицы в вашем случае не слишком велик, 7-15 тысяч это субьективно мало, скорее всего тормоза возникают где-то в другом месте.

Проверяйте свой код :)

Answer 2
  • Создайте индекс для столбца steam
  • Делайте не 5 запросов, а 1
  • Используйте limit
  • Выбирайте не все столбцы, а только нужные: select (column1, column2),

P.S. Экранируйте спецсимволы в переменной $rank

READ ALSO
Как проверить доступ к файлу с абсолютным путём?

Как проверить доступ к файлу с абсолютным путём?

Есть каталоги с изображениями, к ним можно получить доступ по абсолютным путям, надо добавить в главный индексный файл проверки на доступ...

144
Как в переменную php записать структуру в html + echo?

Как в переменную php записать структуру в html + echo?

Есть сайт на wordpressИнтересует как в php переменную записать вывод html и содержимое echo

143
Как парсить номер телефона из теста?

Как парсить номер телефона из теста?

Здравствуйте я сделал парсер видео с ютуба и там есть в описании номера телефонов и скайпы подскажите регулярное выражение или как парсить...

169