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

Разное

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

 

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

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

тема: Можно ли улучшить этот алгоритм?
 
 автор: Владимир55   (25.12.2010 в 10:25)   письмо автору
 
 

Как я понял, быстродействие интернет-магазина определяется, в основном, временем выполнения поискового запроса в базе. И это время, в большинстве случаев, весьма значительно.

А в моем случае имеет место такая ситуация.
База содержит сведения о категории товара, его наименовании, производителе и цене. Запрос из этой базы дает информацию на страницу с этим товаром (для каждого товара отдельная страница).

Но кроме этого, на странице с товаром выводится сообщение: «С этим товаром обычно покупают» и далее ссылки на три других товара из этой товарной группы. Эти ссылки тоже формируются запросами к базе. Причем запросов приходится делать не тори, а больше, поскольку выборка от каждого запроса не должна совпадать с товаром на этой странице и с другими выборками для этого товара. Реально получается в среднем 4.21. То есть, за счет опции «С этим товаром покупают» быстродействие магазина ухудшается в 4 раза.

Можно ли улучшить этот алгоритм для повышения быстродействия?

  Ответить  
 
 автор: Valick   (25.12.2010 в 11:36)   письмо автору
 
   для: Владимир55   (25.12.2010 в 10:25)
 

«С этим товаром обычно покупают» и далее ссылки на три других товара из этой товарной группы
ну как правило товарная группа должна быть другой
если вы купили монитор, то врядли вы поверите, что кто-то с одинм монитором покупает второй в придачу. скорее всего это дожны быть салфетки, шнуры, и настенные крепления.
но как категория "аналогичные модели ценовой категории" как раз самое оно.

лечение "по фотографии" без самой "фотографии" тут не прокатит :)
нужна структура БД и сам запрос
ну а то что все это происходит в 4 раза медленнее конечно же не хорошо.
__
смею предположить, что теги у Вас в одном поле через запятую?

  Ответить  
 
 автор: Владимир55   (25.12.2010 в 11:41)   письмо автору
 
   для: Valick   (25.12.2010 в 11:36)
 

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

Это слегка упрощает дело в плане построения запроса на выборку, но не решает задачу повышения быстродействия.

  Ответить  
 
 автор: Valick   (25.12.2010 в 11:49)   письмо автору
 
   для: Владимир55   (25.12.2010 в 11:41)
 

тогда да
показывайте запросы
я так понимаю искомая книга идет выборкой по id этой книги
а остальные случайные три из данной категории?

  Ответить  
 
 автор: Владимир55   (25.12.2010 в 11:55)   письмо автору
 
   для: Valick   (25.12.2010 в 11:49)
 

Да, именно так.

Запрос прямо сейчас не напишу, поскольку прежде мне придется его найти...

  Ответить  
 
 автор: Valick   (25.12.2010 в 13:32)   письмо автору
 
   для: Владимир55   (25.12.2010 в 11:55)
 

на самом деле мне кажется подход со случайной выборкой тут не уместен (хотя бы по этическим соображениям)
нужна именно отдельная таблица содержащая минимум два поля для сбора статистики покупок
id_book | id_add

кпримеру человек купил три книги с ай-ди 5, 9, 17
в итоге в таблицу записываем

 5 | 9
 5 | 17
 9 | 5
 9 | 17
17 | 5
17 | 9

теперь несложно пердставить себе запрос например для книги с ай-ди 9
с группировкой по id_add и вычислением процентного соотношения предлагаемой случайой (или по определенному критерию) выбранной книг(и)

  Ответить  
 
 автор: Владимир55   (25.12.2010 в 18:05)   письмо автору
 
   для: Valick   (25.12.2010 в 13:32)
 

По этическим причинам не подходит, это верно. Но этика и бизнес несовместимы.

Магазину нужны продажи, но не только в этом дело. Главное - перелинковка как элемент поискового продвижения. Плюс активация поисковиков.

Случайный выбор решает эти проблемы.

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

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

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