<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Оптимизация запросов к MySQL

Оптимизация запросов к MySQL

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

Не пишите запросы в цикле

Эта ошибка очень многих новичков, которые выполняют 100 запросов в цикле. Давайте посмотрим на пример такой ошибки:

<?php
  for ($i = 1; $i < 100; $i++)
    $result_set = $mysqli->query("SELECT * FROM `table` WHERE `id`='$id'");
?>

Ошибка эта очень серьёзная, и здесь действительно возникнут очень большие проблемы с производительностью. Подобные запросы надо выполнять так:

<?php
  $result_set = $mysqli->query("SELECT * FROM `table` WHERE `id` < 100");
?>

Результат будет практически таким же (только всё сразу в одном $result_set), а скорость увеличится многократно.

При выборке указывайте только необходимые поля

В предыдущем примере мы с Вами писали: "SELECT * FROM" - это не есть хорошо, так как выборка по всем поля (*) тормозит выполнение запроса. Поэтому по возможности старайтесь выводить лишь необходимые поля, а не все сразу.

Не используйте ORDER BY RAND() в больших таблицах

Если в таблице несколько тысяч записей, то крайне не эффективно вытаскивать случайную запись с помощью ORDER BY RAND(). Гораздо лучше будет написать так:

<?php
  $n_rand = mt_rand(1, $mysqli->query("SELECT MAX(id) FROM `table`"));
  $result_set = $mysqli->query("SELECT * FROM `table` WHERE `id`='$n_rand'");
?>

Это было несколько замечаний по поводу того, как оптимизировать запросы к MySQL. Самое главное правило - это первое, его необходимо соблюдать всегда, иначе проблем с производительностью скрипта не избежать.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (6):

drasute drasute 24.12.2011 14:11:16

Хм.. А если выводить все комментарии к статье, например. Как тогда доставать данные о каждом авторе не в цикле?

Ответить

Admin Admin 24.12.2011 14:13:34

Для этого есть запросы выборки сразу из нескольких таблиц: http://myrusakov.ru/sql-select-several.html

Ответить

lion337 lion337 17.01.2012 18:15:53

Здравствуйте Михаил! У меня к вам такой вопрос. Как сделать так чтобы текст хранился в базе без тегов, а при выборке в текст подставлялись нужные теги или текст разбивался на параграфы. Спасибо

Ответить

Admin Admin 17.01.2012 19:25:08

Нормальными путями никак. Можно хранить текст, переводы в \n, а затем эти переводы анализировать и подставлять вместо них </p><p>, но так никто не делает, всегда хранять HTML-теги в базе.

Ответить

rysich rysich 25.07.2013 02:47:33

Почему же никто? Так например работает CMS WordPress (функция wpautop($content) проделывает эту и ещё много других замен "на лету").

Ответить

Profi30 Profi30 18.01.2012 19:59:32

Думаю эта тема даже более важна, чем просто оптимизация Php, по той причине, что та же Joomla, являясь по сути набором php-файлов, обращается к MySQL за каждой мелочью. И оптимизация запросов к MySQL приведет к лучшим результатам, чем оптимизация кода.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.