запрос вида 
select p.name, p.Price_Retail, p.FullName, p.ID_Product,
p.Flag, g.name, g.discount
from products p join groups g on p.id_group=g.id_group
order by g.name, p.name 
выдает план 
PLAN SORT (JOIN (G NATURAL, P INDEX (FK_PRODUCTS__ID_GROUP))) 
где natural приводит к тормозам. Что мне нужно еще сделать, чтобы запрос 
работал быстро? 
Вот DDL 
CREATE TABLE PRODUCTS (
ID_PRODUCT INTEGER NOT NULL,
NAME VARCHAR(30) NOT NULL COLLATE PXW_CYRL,
SHORTCODE VARCHAR(25) COLLATE PXW_CYRL,
FULLNAME VARCHAR(40) COLLATE PXW_CYRL,
DESCRIPTION VARCHAR(90) COLLATE PXW_CYRL,
ID_GROUP INTEGER NOT NULL,
ID_UNIT INTEGER,
PRICE_RETAIL T_MONEY NOT NULL /* T_MONEY = NUMERIC(11,4) DEFAULT 0 NOT NULL */,
WARNING T_BOOLEAN NOT NULL /* T_BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK 
(VALUE IN (0,1)) */,
FLAG SMALLINT NOT NULL,
ID_ANALOG INTEGER
); 
ALTER TABLE PRODUCTS ADD CONSTRAINT PK_PRODUCTS PRIMARY KEY (ID_PRODUCT); 
ALTER TABLE PRODUCTS ADD CONSTRAINT FK_PRODUCTS__ID_GROUP FOREIGN KEY 
(ID_GROUP) REFERENCES GROUPS (ID_GROUP) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PRODUCTS ADD CONSTRAINT FK_PRODUCTS__ID_UNIT FOREIGN KEY (ID_UNIT) 
REFERENCES UNITS (ID_UNIT) ON UPDATE CASCADE;
CREATE INDEX IDX_PRODUCTS__ID_ANALOG ON PRODUCTS (ID_ANALOG);
CREATE INDEX IDX_PRODUCTS__NAME ON PRODUCTS (NAME); 
CREATE TABLE GROUPS (
ID_GROUP INTEGER NOT NULL,
ID_PARENT INTEGER NOT NULL,
NAME VARCHAR(50) NOT NULL COLLATE PXW_CYRL,
DISCOUNT T_MONEY NOT NULL /* T_MONEY = NUMERIC(11,4) DEFAULT 0 NOT NULL */
); 
ALTER TABLE GROUPS ADD CONSTRAINT PK_GROUPS PRIMARY KEY (ID_GROUP); 
CREATE UNIQUE INDEX IDX_GROUPS__1 ON GROUPS (ID_PARENT, NAME);
CREATE INDEX IDX_GROUPS__NAME ON GROUPS (NAME);


Ответить