![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
EasyTask |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Добрый день! Помогите составить оптимальный алгоритм для следующей ситуации.
Таблицы: products - Хранит только идентификаторы продуктов products_property - Хранит пары Идентификатор свойства/Значение свойства с сылкой на продукт products_property_type - Хранит иденификаторы свойств Задача: Составить запрос, который бы делал выборку по нескольким свойствам. Пример: Выбрать все продукты, у которых свойство цена > 10 и категория "Стройматериалы" Выбрать все продукты, у которых есть свойство изображение, свойство "В наличии" равно 1, свойство название равно "Краска" Свойств очень много, поэтому вариант джойнить таблицу саму на себя не является оптимальным. Пожалуйста, подскажете решение. Заранее спасибо. |
|||
|
||||
EasyTask |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Все свойства продукта, в том числе категория, хранятся в products_property
Пример одного продукта: products id = 25 cdate = 25.03.2013 products_property product = 25 property = 12 value = 'Стройматериалы' - product = 25 property = 13 value = '1500' - product = 25 property = 14 value = 'Белый' |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Это издержки той структуры, которую вы выбрали. Цена гибкости. ![]() Данная структура не предназначена для такого рода запросов. Нормального решения нет, только компромиссные. Это сообщение отредактировал(а) Zloxa - 24.3.2013, 12:44 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
EasyTask |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Можете привести примеры таких решений?
![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Зачем? Вы и так знаете правильный ответ.
Это сообщение отредактировал(а) Zloxa - 24.3.2013, 13:00 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
EasyTask |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Я бы назвал такое решение не компромисным, а радикальным )
|
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
EasyTask, после того, как вы договоритесь с собой/заказчиком принять это решение не смотря на его радикальность, оно станет компроммисным
![]() Добавлено через 14 минут и 46 секунд
Можно еще
Но это еще более радикальное решение -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
EasyTask |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Почему вы считаете это решение таким уж радикальным?
![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Потому, что это лучше джойна это может быть лишь в частных случаях, когда селективность предикатов слишком велика, чтобы использовать индекс. В случаях, когда индексный доступ по предикатам может быть эффективен, вариант с группировкой против варианта с джойном будет иметь лишнюю сортировку, необходимую для группировки.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |