Reputation: 382
Hi I am having issues applying indexes to improve the speed of the following query..
SELECT SUM(OL.QTY) FROM ORDER_LINE OL, PRODUCT P, ORDERS O
WHERE
O.O_DATE BETWEEN '01-FEB-2014' AND '28-FEB-2014'
AND
O.ID = OL.ORDER_ID
AND
P.ID = OL.PRODUCT_ID
AND
P.NAME = 'APRICOT JAM'
;
Any suggestions would be most appreciated! Currently I have tried applying a concatenated index to the orders table as (O_DATE,ID) which hasn't helped much!
The tables designs are below! Thankyou!
ORDERS
ID NOT NULL NUMBER(38)
CUSTID NOT NULL NUMBER(38)
O_DATE NOT NULL DATE
ORDER_LINE
ORDER_ID NOT NULL NUMBER(38)
PRODUCT_ID NOT NULL NUMBER(38)
QTY NOT NULL NUMBER(4)
PRODUCT
ID NOT NULL NUMBER(38)
NAME NOT NULL VARCHAR(30)
PRICE NOT NULL NUMBER(3,2)
Upvotes: 0
Views: 36
Reputation: 6944
Create index for this fields
PRODUCT.NAME
ORDER_LINE.PRODUCT_ID
ORDER_LINE.ORDER_ID
ORDERS.O_DATE
I assume that you have already primary key fields. If not, create unique index for primary keys first
ORDER.ID
PRODUCT.ID
Upvotes: 1