







|
MySQL.RU - Webboard
Вернуться
оптимизация хранения и поиска (Александр) 25/01/2008 - 18:23:55
Re: оптимизация хранения и поиска (Александр) 25/01/2008 - 18:49:48
Re: оптимизация хранения и поиска (Ol) 30/01/2008 - 12:29:29
From: Александр - 25/01/2008 - 18:23:55
Subject:оптимизация хранения и поиска
-----------------
Всем доброго времени суток. Есть такая задача (этакий интерент магазин):
Есть список товаров одного типа. Каждый товар может иметь несколько размеров и поэтому несколько цен. Наример:
Парус для виндесрфинга:
Размер (м2) Цена (у.е.)
Парус1
5 300
7 500
10 850
Парус2
6.5 380
6.8 400
7.3 530
и.т.д.
Нужно выбрать парус размером от 5 до 7 метров квадратных и ценой от 300 до 500 у.е. Вопрос в том, как оптимальнее хранить и выбирать данные (при том, что колличество размеров и цен соответсвенно одной единицы может быть и больше. например 10 - 15 размеров). Мне пришли следующие идеи для решения:
1. Создавать несколько полей размеров/цен (например size1 .. size10, price1 .. price10) и поиск делать с учётом каждого поля, например (сразу предупреждаю, я чайник, так что чур помидорами не бросаться :) )
SELECT * FROM list
WHERE ((price1 >=300 AND price1 <=500) AND (size1 >= 5 AND size1 <= 7) OR
((price2 >=300 AND price2 <=500) AND (size2 >= 5 AND size2 <= 7) OR
((price3 >=300 AND price3 <=500) AND (size3 >= 5 AND size3 <= 7)
Получается достаточно ёмкая таблица и длинное условие выборки (особенно, если кол-во размеров заходит за 10)
2. Точно не уверен в возможности реализации этого метода, но всё же:
Хранить все размеры одного товара в одной ячейке (строке, или ещё как-нибудь) и в отдельной все цены. Потом средствами MySQL эти строки как-то разбирать и потом делать сравнения. Менее ёмкая таблица выходит, но зато сама программа (условие) выборки может усложниться.
Может кто-нибудь посоветовать чего? Буду очень благодарен за любую помощь!
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
32903
|
|