Slon747
Новичок
Тормоза при двойном связывании таблицы
MySQL 5.0.77
Есть таблица номенклатуры (items) и таблица цен (prices).
Цены хранятся в разрезе характеристик.
Чтобы получить номенклатуру с ценами двух типов (без учета характеристик), я дважды связываю эти таблицы, после чего группирую по items.Id.
Поля, по которым идет связывание и отбор, проиндексированы.
При двух соединениях запрос выполняется в 25 раз дольше, чем при одном.
В чем может быть дело и как это исправить?
MySQL 5.0.77
Есть таблица номенклатуры (items) и таблица цен (prices).
Цены хранятся в разрезе характеристик.
Чтобы получить номенклатуру с ценами двух типов (без учета характеристик), я дважды связываю эти таблицы, после чего группирую по items.Id.
Поля, по которым идет связывание и отбор, проиндексированы.
Код:
SELECT
items.Id, MAX(prices.Price), MAX(prices_2.Price)
FROM
items
INNER JOIN prices ON prices.Item = items.Id AND prices.PriceType = 1
INNER JOIN prices prices_2 ON prices_2.Item = items.Id AND prices_2.PriceType = 2
WHERE
items.Parent = '113'
GROUP BY
items.Id
В чем может быть дело и как это исправить?
Код:
CREATE TABLE items(
Id VARCHAR(32) DEFAULT '0',
Parent INT(11) NOT NULL,
PRIMARY KEY (Id),
INDEX iParent (Parent)
)
CREATE TABLE prices(
Id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
PriceType INT(4) NOT NULL DEFAULT 0,
Item CHAR(32) NOT NULL DEFAULT '0',
Description CHAR(32) NOT NULL,
Price DOUBLE (9, 2) NOT NULL DEFAULT 0.00,
PRIMARY KEY (Id),
INDEX IX_prices_Item (Item)
)