<MyRusakov.ru />

Создание Интернет-магазина на PHP и MySQL

Создание Интернет-магазина на PHP и MySQL

Видеокурс "Создание Интернет-магазина на PHP и MySQL" - это уникальный курс по созданию Интернет-магазина с нуля. Особенностью данного курса является то, что создание идёт с самого начала, то есть от идеи. Далее создаётся дизайн всех необходимых страниц, после делается их вёрстка. Затем создаётся движок на PHP и MySQL, после делается Admin-панель и, наконец, готовый сайт размещается в Интернете.

Адрес созданного в этом курсе сайта: http://storedvd.ru

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

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

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

Ответить

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