<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

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

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

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

Подписавшись по 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 приведет к лучшим результатам, чем оптимизация кода.

Ответить

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