I understand the produce of the phenomennon.It because 'COOKING'in the table "ITEM" column "I_SUBJECT".
Now,I change my sql statment.
Follow is the 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 >515603 AND ITEM.I_SUBJECT = 'COOKING'
 GROUP BY I_ID, I_TITLE, A_FNAME, A_LNAME
----------------------------------------------------------------------------------------

The condition "ORDER_LINE.OL_O_ID >10000" turn into "ORDER_LINE.OL_O_ID
515603".
Follow is the explain output:
----------------------------------------------------------------------------------------

DBA ORDER_LINE ORDER_LINE_OL_O_ID RANGE CONDITION FOR INDEX 20532 DBA ITEM ITEC_BOTH1 JOIN VIA RANGE OF MULTIPLE INDEXED COL. 810 I_ID (USED INDEX COLUMN) DBA AUTHOR A_ID JOIN VIA KEY COLUMN 125 TABLE HASHED RESULT IS COPIED , COSTVALUE IS 2162
----------------------------------------------------------------------------------------

The costvalue is going down.
But the costvalue too high to apply.
For this explain output,how do i optimize the sql statement?


From: 王 旭 <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED], [email protected]
Subject: RE: optimize a sql statement
Date: Thu, 16 Jun 2005 10:44:39 +0800

hello schroeder,

I notice a phenomenon.
When the condition "ITEM.I_SUBJECT = 'COOKING'" be changed into others,the costvalue 5443 turn to 19!! For example, "ITEM.I_SUBJECT = 'qwerqwer'" or "ITEM.I_SUBJECT = 'COOK'" or "ITEM.I_SUBJECT = 'COOKINGG'".

why??


From: "Schroeder, Alexander" <[EMAIL PROTECTED]>
To: ????<[EMAIL PROTECTED]>,        <[email protected]>
Subject: RE: optimize a sql statement
Date: Wed, 15 Jun 2005 08:18:34 +0200

Hello Liu,

I only meant that - aside from simple cases - any suggestion must take the
output of the EXPLAIN
command into account (the complete output), so you should post it along
with your query. If you only
say 'the cost is 5443 and it's too high' there can no suggestion be given.

Regards
Alexander Schr枚der
SAP DB, SAP Labs Berlin

> -----Original Message-----
> From: ????[mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 14, 2005 6:28 PM
> To: Schroeder, Alexander; [email protected]
> Subject: RE: optimize a sql statement
>
> I know the knowledge about you mean.
> But can i optimize this operation at the status?
>
> >From: "Schroeder, Alexander" <[EMAIL PROTECTED]>
> >To: ????<[EMAIL PROTECTED]>, <[email protected]>
> >Subject: RE: optimize a sql statement
> >Date: Tue, 14 Jun 2005 16:16:06 +0200
> >
> >Hello Liu,
> >
> >it would possibly help to identify whether there are any
> possibilities to
> optimize the statement if you post
> >the EXPLAIN output, as the strategy chosen often depends on
> the table
> statistics, i.e. depends on the data
> >contained in the tables.
> >
> >Regards
> >Alexander  Schr??er
> >SAP DB, SAP Labs Berlin
> >
> > > -----Original Message-----
> > > From: ????[mailto:[EMAIL PROTECTED]
> > > Sent: Tuesday, June 14, 2005 3:56 PM
> > > To: [email protected]
> > > Subject: optimize a sql statement
> > >
> > > 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!
> > >
> > > _________________________________________________________________ > > > 娑?氦浠???规????寮告?娑??娴??绁??宀??娴h法??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]
> > >
> > >
>
> _________________________________________________________________
> 浜??涓??涓??澶х??靛???欢绯荤???MSN Hotmail??
http://www.hotmail.com
>
>

_________________________________________________________________
与联机的朋友进行交流,请使用 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]


_________________________________________________________________
免费下载 MSN Explorer: http://explorer.msn.com/lccn

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

Reply via email to