TGViewer
Библиотека PHP программиста 👨🏼‍💻👩‍💻 Библиотека PHP программиста 👨🏼‍💻👩‍💻 @php_lib · 2.06K subscribers
Post #859 544
Оптимизация SQL-запросов в PHP: избавляемся от тормозов! 🚀

Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.

1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:


$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();


2. Выбирайте только нужные данные
Зачем вам SELECT *, если нужно только id и name? Выбирайте только нужные колонки!


$stmt = $pdo->query("SELECT id, name FROM users");


3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в WHERE и JOIN. Без индексов база будет делать полный перебор строк!


CREATE INDEX idx_email ON users(email);


4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с JOIN.

❌ Плохо (100 запросов в цикле!):


foreach ($users as $user) {
$stmt = $pdo->prepare("SELECT * FROM orders WHERE user_id = ?");
$stmt->execute([$user['id']]);
$orders[$user['id']] = $stmt->fetchAll();
}


✅ Хорошо (один запрос):


$query = "SELECT users.id, users.name, orders.id as order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll();


5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.


$cacheKey = "users_list";
$users = $redis->get($cacheKey);

if (!$users) {
$users = $pdo->query("SELECT id, name FROM users")->fetchAll();
$redis->setex($cacheKey, 3600, json_encode($users));
}


Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.

📲 Мы в MAX

👉 @php_lib
  • 🔥 5
  • 👍 3
  • ❤ 1
More from @php_lib
  1. Sep 24, 2026Сегодня хочу поговорить о теме, которая часто мешает PHP-разработчикам писать красивый и у…
  2. Sep 21, 2026Совет по Laravel💡 Если вы хотите автоматически удалять старые записи, используйте трейт P…
  3. Sep 16, 2026Совет по Laravel💡 Знаете ли вы .... tap() = Tweak and Return 🪄 Да, в Laravel метод tap()…
  4. Sep 9, 2026Совет по Laravel💡 Знаете ли вы... В Laravel есть метод withProgressBar(), который позволя…
  5. Sep 7, 2026💡Совет по Laravel Определение языка пользователя Laravel использует компонент HttpFoundat…
  6. Aug 31, 2026💡Знал ли вы, что… Метод Number::abbreviate в Laravel преобразует сложные числа в удобочит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →