Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть две таблицы:
CREATE TABLE gprom_yud_dbo.node (
ID_NODE INT(10) NOT NULL,
ID_PARENT INT(10) DEFAULT NULL,
ID_ITEMTYPE INT(10) NOT NULL DEFAULT 0,
N_ORDER INT(10) NOT NULL DEFAULT 0,
STR_LABEL VARCHAR(256) NOT NULL,
DATE_LAST DATETIME DEFAULT NULL,
DATE_CREATE DATETIME DEFAULT NULL,
ID_USER INT(10) NOT NULL,
ID_OLDPARENT INT(10) DEFAULT NULL,
N_MODE INT(10) DEFAULT NULL,
LINK_COUNTER INT(10) NOT NULL DEFAULT 0,
PRIMARY KEY (ID_NODE),
INDEX NODE_PARENT USING BTREE (ID_PARENT),
INDEX FK_ITEMTYPE_NODE USING BTREE (ID_ITEMTYPE),
INDEX FK_USER_NODE USING BTREE (ID_USER),
CONSTRAINT FK_ITEMTYPE_NODE FOREIGN KEY (ID_ITEMTYPE)
REFERENCES gprom_yud_dbo.itemtypes(ID) ON DELETE NO ON UPDATE NO,
CONSTRAINT FK_PARENT_NODE FOREIGN KEY (ID_PARENT)
REFERENCES gprom_yud_dbo.node(ID_NODE) ON DELETE NO ON UPDATE NO,
CONSTRAINT FK_USER_NODE FOREIGN KEY (ID_USER)
REFERENCES gprom_yud_dbo.users(ID_USER) ON DELETE NO ON UPDATE NO
)
ENGINE = INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;
и
CREATE TABLE gprom_yud_dbo.attrval_char (
ID_NODE INT(10) NOT NULL,
ID_ATTR INT(10) NOT NULL,
CHAR_VALUE VARCHAR(255) NOT NULL,
PRIMARY KEY (ID_NODE, ID_ATTR),
INDEX FK_ATTRVAL_CHAR_ATTRS USING BTREE (ID_ATTR),
INDEX IX_ATTRVAL_CHAR USING BTREE (CHAR_VALUE(191)),
CONSTRAINT FK_ATTRVAL_CHAR_ATTRS FOREIGN KEY (ID_ATTR)
REFERENCES gprom_yud_dbo.attrs(ID_ATTR) ON DELETE NO ON UPDATE NO,
CONSTRAINT FK_ATTRVAL_CHAR_NODE FOREIGN KEY (ID_NODE)
REFERENCES gprom_yud_dbo.node(ID_NODE) ON DELETE NO ON UPDATE NO
)
ENGINE = INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;
Такой запрос на 250 000 записей выполняется порядка 6 секунд что неприелемо:
SELECT P1.A2 AS COL1
FROM
NODE N INNER JOIN
(SELECT
N.ID_NODE, T.CHAR_VALUE AS A2
FROM
NODE N
LEFT OUTER JOIN ATTRVAL_CHAR T ON N.ID_NODE = T.ID_NODE AND T.ID_ATTR = 1805) P1
ON N.ID_NODE = P1.ID_NODE
EXPLAIN показывает вот что (скрин). На сколько я понял проблема в том что при объединении выборки P1 c NODE не используется индекс P1.ID_NODE. Буду признателен если кто то подскажет как можно решить проблему...
Неактивен
Страниц: 1