Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Оптимизация запроса выборки товара и картинок для данного товара
 
 автор: sanekdi   (12.11.2011 в 09:52)   письмо автору
 
 

Есть две таблицы

Таблица товаров(product) и картинок к товарам (product_image)

Таблица: товаров
CREATE TABLE IF NOT EXISTS `product` (
  `id_product` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `price` float(8,2) NOT NULL,  
  PRIMARY KEY (`id_product`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Таблица: каринок
СREATE TABLE IF NOT EXISTS `product_image` (
  `id_image` int(11) NOT NULL AUTO_INCREMENT,
  `alt` varchar(255) NOT NULL,
  `photo` varchar(255) NOT NULL,
  `photo_small` varchar(255) NOT NULL,
  `image_pos` int(11) NOT NULL,
  `id_product` int(255) NOT NULL,
  PRIMARY KEY (`id_image`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



Задача: Необходимо показвать товар и картинку для товара( в поле значение image_pos с наимнньшей позицие для конкретного товара), если у товара картинка нет, то
--product_image.photo_small возврашает NULL

Запрос:

SELECT shop_product.id_product,
        product.name,
        product.price, 
        product_image.photo_small 
        
    FROM  shop_product 
        LEFT JOIN product_image ON product.id_product=product_image.id_product 
    WHERE (image_pos=(SELECT Min(image_pos) FROM product_image WHERE product_image.id_product=product.id_product) OR product_image.id_image IS NULL) 
    ORDER BY price ASC


--Проблема: при товаров от 500 товаров начитает медлено выполняться запрос, помогите его оптимизировать

  Ответить  
 
 автор: Valick   (12.11.2011 в 10:50)   письмо автору
 
   для: sanekdi   (12.11.2011 в 09:52)
 

поля проиндексированны?

  Ответить  
 
 автор: sanekdi   (12.11.2011 в 10:54)   письмо автору
 
   для: Valick   (12.11.2011 в 10:50)
 

image_pos для таблицы картинок нет, или какие то другие поля?

  Ответить  
 
 автор: sanekdi   (12.11.2011 в 11:14)   письмо автору
 
   для: sanekdi   (12.11.2011 в 10:54)
 

product_image.id_product поставил индекс вроде стало лучше, вы имели это поле?

  Ответить  
 
 автор: Valick   (12.11.2011 в 11:50)   письмо автору
 
   для: sanekdi   (12.11.2011 в 11:14)
 

ну да, потому как примари кей и так проиндексированы
просто мало времени и поэтому пока не вник в проблему поглубже
кстати `id_product` в картинках тоже наверно не мешало бы

  Ответить  
 
 автор: cheops   (12.11.2011 в 12:40)   письмо автору
 
   для: sanekdi   (12.11.2011 в 11:14)
 

После индексации, выполните оператор EXPLAIN в отношении этого запроса, чтобы посмотреть подцепились ли индексы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования