Оптимізація запитів до mysql
Відео: Як оптимізувати MySQL запити з Query Profiler від Devart - [Переклад]
У попередній статті я писав про оптимізації PHP, і я подумав, що корисно буде знати не тільки, як оптимізувати PHP-код, але і як оптимізувати запити до MySQL, які часто дуже часто посилаються. Отже, їх оптимізація може дати хороший приріст до продуктивності скрипта.
Не пишіть запити в циклі
Ця помилка дуже багатьох новачків, які виконують 100 запитів в циклі. Давайте подивимося на приклад такої помилки:
lt ;?php
for($ i =1- $ i lt;100- $ i++)
$ result_set = $ mysqli-gt;query("SELECT * FROM` table` WHERE `id` = `$ id`") -
?gt;
Помилка ця дуже серйозна, і тут дійсно виникнуть дуже великі проблеми з продуктивністю. Подібні запити треба виконувати так:
Відео: SQL запит EXPLAIN і EXPLAIN QUERY PLAN в базах даних SQLite: оптимізація SQL запитів
lt ;?php
$ result_set = $ mysqli-gt;query("SELECT * FROM` table` WHERE `id` lt; 100 ") -
?gt;
Результат буде практично таким же (тільки все відразу в одному $ result_set), А швидкість збільшиться багаторазово.
При вибірці вказуйте тільки необхідні поля
У попередньому прикладі ми з Вами писали: "SELECT * FROM"- це не є добре, тому що вибірка по всіх поля (*) Гальмує виконання запиту. Тому по можливості намагайтеся виводити лише необхідні поля, а не все відразу.
Відео: sql-запити до бази даних з php
Не використовуйте ORDER BY RAND () у великих таблицях
Якщо в таблиці кілька тисяч записів, то вкрай неефективне витягувати випадкову запис за допомогою ORDER BY RAND (). Набагато краще буде написати так:
lt ;?php
$ n_rand = mt_rand(1, $ mysqli-gt;query("SELECT MAX (id) FROM` table` ")) -
$ result_set = $ mysqli-gt;query("SELECT * FROM` table` WHERE `id` = `$ n_rand`") -
?gt;
Це було кілька зауважень з приводу того, як оптимізувати запити до MySQL. Найголовніше правило - це перше, його необхідно дотримуватися завжди, інакше проблем з продуктивністю скрипта не уникнути.
- Як зробити підписку на сайті (v2)
- Як дізнатися кількість записів в sql-вибірці
- Як дізнатися останній id в mysql
- Як знайти помилку в sql-запиті
- Nodejs. Що таке query strings.
- Як зробити коментування на сайті
- Як дізнатися, скільки змінилося рядків після update
- Як дізнатися синтаксис sql-запиту через phpmyadmin
- Nodejs. Як обробляти post запити.
- Конструкція where в sql
- Перевірка зайнятості логіна на ajax
- Багаторівневе меню на php і mysql
- Випадкова вибірка з бази даних
- Запит sql на вибірку записів
- Sql-запити для роботи з таблицями
- Клас для роботи з базою даних
- Відправка get-запитів в curl
- Підключення до бази даних в php
- Автоматичне резервне копіювання на php
- Відправлення запитів до бази даних в php
- Function fetch_assoc () on a non-object