Оптимизация SQL запроса

Четверг, 29 Сен 2011 12:50

Оптимизация SQL запроса
Уровень интеграции между PHP и MySQL позволяет легко создавать динамические веб-приложения в сжатые сроки. Всего за несколько минут можно написать код для получения информации из базы данных MySQL для использования в веб-приложении. Взаимодействие с базами данных MySQL является одним из основных требований для построения мощных и полезных веб-приложений. При использовании MySQL баз данных для реализации модели данных в веб-приложениях встречается одна ошибка, которую часто допускают начинающие разработчики.
В данном примере мы создадим очень простое веб-приложение, которое почти не делает ничего полезного. Тем не менее, данное веб-приложение является хорошим способом продемонстрировать довольно распространенную ошибку и предоставляет пример простого решения. Приложение, которое мы напишем, будет отображать список имен людей и выводить их любимые цвета. В примере не будут рассмотрены все этапы создания приложения, такие как добавление новых людей или назначение цветов, вы должны сделать это самостоятельно.
Создание таблиц MySQL
Нам понадобится две MySQL таблицы, одна будет содержать список людей, другая цвета. С помощью следующих SQL-запросов будут созданы таблицы с нужной структурой.
CREATE TABLE `person` (
`ID` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 30 ) NOT NULL
);
CREATE TABLE `colour` (
`ID` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`personID` INT( 5 ) NOT NULL ,
`colour` VARCHAR( 30 ) NOT NULL
);
При выполнении вышеприведенных SQL-запросов, вы получите две таблицы, необходимые для работы веб-приложения. Перед тем как двинуться дальше, заполним таблицы данными. Также выполните следующие запросы.
INSERT INTO `person` (`ID`, `name`) VALUES (NULL, ‘Michael’), (NULL, ‘Alyshea’);
INSERT INTO `person` (`ID`, `name`) VALUES (NULL, ‘Frank’), (NULL, ‘Jim’);

 

INSERT INTO `colour` (`ID`, `personID`, `colour`) VALUES (NULL, ’1′, ‘Blue’), (NULL, ’1′, ‘Black’);

INSERT INTO `colour` (`ID`, `personID`, `colour`) VALUES (NULL, ’2′, ‘Pink’), (NULL, ’3′, ‘Green’);

INSERT INTO `colour` (`ID`, `personID`, `colour`) VALUES (NULL, ’3′, ‘Brown’), (NULL, ’4′, ‘Yellow’);
Что обычно делают неправильно
Для начала я покажу, как можно неправильно выполнить эту операцию. Многие люди так делают, и есть несколько причин, по которым стоит этого избегать. Давайте сразу перейдем к PHP-коду.
// Запрос на получение всех записей о людях
$queryPeople = mysql_query(«SELECT * FROM person») or die(mysql_error());
// Обработать в цикле каждую запись
while($person = mysql_fetch_array($queryPeople))
{
// Вывести имя человека
echo »
<h1>» . $person['name'] . «</h1>
«;
// Запрос любимых цветов данного человека
$queryColours = mysql_query(«SELECT * FROM colour WHERE personID = ‘» . $person['ID'] . «‘»);
// Обработать в цикле каждый цвет
while($colour = mysql_fetch_array($queryColours))
{
// Отобразить цвет
echo $colour['colour'] . «<br>»;
}
}

 

1   2

 

 

 

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Читать похожие статьи:

Вы можете оставить отзыв или трекбек со своего сайта.

Ваш отзыв

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: