powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Увеличение скорости выборки из каталога товаров
2 сообщений из 2, страница 1 из 1
Увеличение скорости выборки из каталога товаров
    #32724287
PMaxS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется стандартный каталог товаров: товары всех категорий храним в одной таблице tovar, значения всех параметров товаров храним в одной таблице value:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE category (
  id smallint( 5 ) unsigned NOT NULL default '0',
  name tinytext NOT NULL
) TYPE=MyISAM COMMENT='Категории каталога';

CREATE TABLE property (
  id smallint( 5 ) unsigned NOT NULL auto_increment,
  name varchar( 255 ) binary NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM COMMENT='Характеристики' AUTO_INCREMENT= 16  ;

CREATE TABLE tovar (
  id int( 10 ) unsigned NOT NULL auto_increment,
  name varchar( 255 ) binary NOT NULL default '',
  category_id smallint( 5 ) unsigned NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY category_id (category_id)
) TYPE=MyISAM COMMENT='Товары';

CREATE TABLE value (
  tovar_id int( 10 ) unsigned NOT NULL default '0',
  property_id smallint( 5 ) unsigned NOT NULL default '0',
  value tinytext NOT NULL,
  PRIMARY KEY  (tovar_id,property_id),
  KEY value (value( 10 ),property_id)
) TYPE=MyISAM COMMENT='Значения характеристик товаров';

Поиск товаров производится внутри одной категории следующим SQL-запросом
Пр. (поиск по трем характеристикам)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT
  tovar.id
FROM
  tovar,
  value value1,
  value value2,
  value value3
WHERE
  tovar.category_id =  1 
  AND value1.tovar_id = tovar.id
  AND value1.property_id = '5'
  AND value1.value = 'p_5353'
  AND value2.tovar_id = tovar.id
  AND value2.property_id = '10'
  AND value2.value = 'p_4128'
  AND value3.tovar_id = tovar.id
  AND value3.property_id = '12'
  AND value3.value = 'p_503'


Можно ли для данной структуры увеличить скорость выборки товаров, изменив SQL-запрос?
Если нет, то как лучше изменить структуру каталога для увеличения выборки товаров?
...
Рейтинг: 0 / 0
Увеличение скорости выборки из каталога товаров
    #32725186
Может что-то типа этого, если я правильно Вас понял:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT t.id, sum(
	(property_id =  5  AND value = 'p_5353') OR
	(property_id =  10  AND value = 'p_4128') OR
	(property_id =  12  AND value = 'p_503') ) summa
FROM value v, tovar t
WHERE t.category_id =  1  AND t.id = v.tovar_id
GROUP BY t.id
HAVING summa =  3 

ЗЫ: А сколько времени выполняется Ваш запрос?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Увеличение скорости выборки из каталога товаров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]