[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: нужно ли оптимизировать
maximka787
Привет мужики. Подскажите, кто сможет. Задача не сложная, но чую, что делаю что-то не так. Создал функцию вывода товара. (название, описание и картинка)
Связи сделаны так, что пришлось разбить на 3 таблицы.
Товары id_tovar, ..., ..., ...;
Картинки к товарам id, id_tovar
Описание к товарам id, id_tovar
id_tovar это ключ.

Нужно ли оптимизировать скрипт, или все правильно сделано у меня?
$result = mysql_query("select * from product");
while($row = mysql_fetch_array($result)){

$temp_id = $row['id_product']; // получаем основной ID

echo '<h1>'.$row['name'].'</h1>'; // выводим название продукта

//получение картинок

$resultPICT = mysql_query("select * from product_picts where id='".$temp_id."'");
$rowPICT = mysql_fetch_array($resultPICT);
echo '<p><img src="items/'.$rowPICT['link']'.jpg"></p>'; //картинка

//описание товара

$resultOP = mysql_query("select * from product_opisanie where id_product=".$temp_id."");
$rowOP = mysql_fetch_array($resultOP);
echo '<p>'.$rowOP['opisanie'].'</p>'; // описание
}




Спустя 1 час, 22 минуты, 6 секунд (6.04.2011 - 20:09) Trianon написал(а):
Если описание у Вас одно на товар - его имеет смысл хранить в таблице с товаром.
Таблица с описаниями не нужна.

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


Про оптимизацию думать забудьте.
Оптимизировать можно то, что уже сделано и корректно работает, но и потребляет больше ресурсов, чем хочется.
Оптимизация раньше времени обычно приводит к лишним затратам, никакого полезного эффекта в конечном итоге не приносящим.

Спустя 16 минут, 23 секунды (6.04.2011 - 20:25) maximka787 написал(а):
Trianon
Все верно. Спорить не буду. Тут просто не сам код важен, сколько идея, можно ли делать запросы в таком вот виде.

Я тогда сокращу код. Тут логика точно верная, вывод множества картинок. Нужно оптимизировать такую структуру в принципе?

$result = mysql_query("select * from product");
while($row = mysql_fetch_array($result)){

echo '<h1>'.$row['name'].'</h1>'; // выводим название продукта

//получение картинок

$resultPICT = mysql_query("select * from product_picts where id='".$row['id_product']."'");
while($rowPICT = mysql_fetch_array($resultPICT)){

$rowPICT = mysql_fetch_array($resultPICT);
echo '<p><img src="items/'.$rowPICT['link']'.jpg"></p>';

}
}

Спустя 16 минут, 43 секунды (6.04.2011 - 20:42) Trianon написал(а):
where id= во внутреннем запросе вызывает сомнения.
В принципе, весь поток данных можно вытащить одним (LEFT JOIN) запросом.
Стоит ли это делать - вопрос спорный.
Опять же, несколько картинок одного товара обычно показывают на странице этого товара, а не в общем прайсе.
Одну картинку на товар всяко лучше вытаскивать через LEFT JOIN

Спустя 3 минуты, 57 секунд (6.04.2011 - 20:46) maximka787 написал(а):
Trianon
Наверно про LEFT JOIN надо почитать. опять же, изначально не было цикла при выводе картинок всех из-за того что это был вывод в прайсе, то есть только первая показывается. Я сейчас хочу понять если JOIN правильней использовать чем кучу запросов, то надо объединять учиться.


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.