I have a sql statement been created basing three table.
This is the table's creating statement:
-------------------------------------------------------------------------------------

CREATE TABLE "DBA"."ITEM"
(
        "I_ID"               Integer    NOT NULL,
        "I_TITLE"               Varchar (60) ASCII,
        "I_A_ID"               Integer,
        "I_PUB_DATE"               Date,
        "I_PUBLISHER"               Varchar (60) ASCII,
        "I_SUBJECT"               Varchar (60) ASCII,
        "I_DESC"               Varchar (500) ASCII,
        "I_RELATED1"               Integer,
        "I_RELATED2"               Integer,
        "I_RELATED3"               Integer,
        "I_RELATED4"               Integer,
        "I_RELATED5"               Integer,
        "I_THUMBNAIL"               Varchar (40) ASCII,
        "I_IMAGE"               Varchar (40) ASCII,
        "I_SRP"               Fixed (17,2),
        "I_COST"               Fixed (17,2),
        "I_AVAIL"               Date,
        "I_STOCK"               Integer,
        "I_ISBN"               Char (13) ASCII,
        "I_PAGE"               Integer,
        "I_BACKING"               Varchar (15) ASCII,
        "I_DIMENSIONS"               Varchar (25) ASCII,
        PRIMARY KEY ("I_ID")
)

CREATE TABLE "DBA"."AUTHOR"
(
        "A_ID"               Integer    NOT NULL,
        "A_FNAME"               Varchar (20) ASCII,
        "A_LNAME"               Varchar (20) ASCII,
        "A_MNAME"               Varchar (20) ASCII,
        "A_DOB"               Date,
        "A_BIO"               Varchar (500) ASCII,
        PRIMARY KEY ("A_ID")
)

CREATE TABLE "DBA"."ORDER_LINE"
(
        "OL_ID"               Integer    NOT NULL,
        "OL_O_ID"               Integer    NOT NULL,
        "OL_I_ID"               Integer,
        "OL_QTY"               Integer,
        "OL_DISCOUNT"               Fixed (5,2),
        "OL_COMMENTS"               Varchar (100) ASCII,
        PRIMARY KEY ("OL_ID", "OL_O_ID")
)
CREATE INDEX "ORDER_LINE_OL_I_ID" ON "DBA"."ORDER_LINE"("OL_I_ID" ASC)
CREATE INDEX "ITEM_I_A_ID" ON "DBA"."ITEM"("I_A_ID" ASC)
CREATE INDEX "ORDER_LINE_OL_O_ID" ON "DBA"."ORDER_LINE"("OL_O_ID" ASC)
CREATE INDEX "ITEM_I_SUBJECT" ON "DBA"."ITEM"("I_SUBJECT" ASC)
-----------------------------------------------------------------------------

Follow is the sql statement:
-----------------------------------------------------------------------------

SELECT SUM(OL_QTY) SUMOLQTY,I_ID, I_TITLE, A_FNAME, A_LNAME FROM DBA.ITEM, DBA.AUTHOR, DBA.ORDER_LINE WHERE ITEM.I_ID = ORDER_LINE.OL_I_ID AND ITEM.I_A_ID = AUTHOR.A_ID AND ORDER_LINE.OL_O_ID >1 AND ITEM.I_SUBJECT = 'COOKING' GROUP BY I_ID, I_TITLE, A_FNAME, A_LNAME
-----------------------------------------------------------------------------

I using explain statement.Then i find the cost is 5443 though the statement wasn't using table scan search strategy.The cost is too high.

Please help me optimize this sql statement. Thanks!

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to