Hi Hannes

Several approaches to achieve your work. One is upgrade your resource i.e.
CPU, memory... I do not take this. Another is check all columns used inside
WHERE clause whether they are indexed. If not, pls create indexes for them.
it will definitely smooth better.

Programmatically, I suggest you try to divide your query into several small
queries. According to your query below, you are likely to join about 10
tables. As data grows, join those tables will produce undetermined large set
of data.


Tony

 -----Original Message-----
From:   Hannes Wyss [mailto:[EMAIL PROTECTED]]
Sent:   Wednesday, March 14, 2001 6:29 PM
To:     [EMAIL PROTECTED]
Subject:        Very (excruciatingly) slow select

Hi List, I'm new to the list
and I have a BrainTeaser for all of you.


I have yet lots to learn about sql and mySQL so any suggestions are very
welcome!

Thanx in advance

Hannes


I have following select over a Database that I cannot setup myself, but
have to take on as is:

SELECT COMP.CompKey, COMP.NameLong, COMP.Internet, COMP.EMAIL,
       ACCOMP.Phar, ACCOMP.CompKey, ACCOMP.Role,
       AC.Phar, AC.IKSCat, AC.GenericCode, AC.InsCode, AC.GrdFrCode,
AC.WWW, AC.NumOfPce, AC.SaleCode,
       ACMED.Phar, ACMED.ATCKey, ACMED.FormCode,
       ACNAM.Phar, ACNAM.LangCode, ACNAM.Name50,
       ACSC.Phar, ACSC.StoLNr, ACSC.StoKeyG, ACSC.Quantity,
ACSC.QuantityUnit, ACSC.CodeWHK,
       SC.StoKeyG, SC.StoName,
       ACPRICEALG.Phar, ACPRICEALG.PriceType, ACPRICEALG.Price,
       CODES.CodeType, CODES.CodeValue, CODES.LangCode, CODES.CodeDesc
AS GalenicForm,
       CLASS.CodeType, CLASS.CodeValue, CLASS.LangCode, CLASS.CodeDesc
AS ATCClass
FROM   AC, ACMED, ACNAM, ACCOMP, COMP, ACSC, SC, ACPRICEALG, CODES,
CODES AS CLASS
WHERE  COMP.NameLong LIKE '<<<<<<<<<<Here Come the
SearchTerms>>>>>>>>>>>>>>>%'
AND    ACCOMP.CompKey=COMP.CompKey
AND    ACCOMP.Role='H'
AND    AC.Phar=ACCOMP.Phar
AND    AC.SaleCode!='H'
AND    ACMED.Phar=ACCOMP.Phar
AND    ACNAM.Phar=ACCOMP.Phar
AND    ACNAM.LangCode='D'
AND    ACSC.Phar=ACCOMP.Phar
AND    ACSC.CodeWHK='W'
AND    SC.StoKeyG=ACSC.StoKeyG
AND    ACPRICEALG.Phar=ACMED.Phar
AND    ACPRICEALG.PriceType='PPUB'
AND    CODES.CodeType=5
AND    CODES.CodeValue=ACMED.FormCode
AND    CODES.LangCode='D'
AND    CLASS.CodeType=3
AND    CLASS.CodeValue=ACMED.ATCKey
AND    CLASS.LangCode='D'
ORDER BY ACMED.ATCKey, ACPRICEALG.Price, ACMED.Phar, ACSC.StoLNr


EXPLAIN says:
+-Table------+-Type---+-Possible
Keys---+-Key----------+-Key-len---+-References---+-Rows---+-Extra-------
+
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| COMP       | range  | PRIMARY,        | NameLong     |           |
|      1 |             |
|            |        | NameLong        |              |           |
|        |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| CLASS      | ref    | PRIMARY         | PRIMARY      |         4 | ???
|    159 | where used  |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| SC         | ALL    | PRIMARY         |              |           |
|   6710 |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| ACSC       | ref    | PRIMARY,Phar,   | StoKeyG      |         5 |
SC.StoKeyG,  |     14 |             |
|            |        | StoKeyG         |              |           | W
|        |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| ACCOMP     | eq_ref | PRIMARY,CompKey | PRIMARY      |         9 |
ACSC.Phar,   |      1 | where used  |
|            |        |                 |              |           |
COMP.CompKey,|        |             |
|            |        |                 |              |           | H
|        |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| AC         | eq_ref | PRIMARY         | PRIMARY      |         4 |
ACCOMP.Phar  |      1 | where used  |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| ACNAM      | eq_ref | PRIMARY         | PRIMARY      |         5 |
ACCOMP.Phar, |      1 | where used  |
|            |        |                 |              |           | D
|        |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| ACMED      | eq_ref | PRIMARY,ATCKey  | PRIMARY      |         4 |
ACCOMP.Phar  |      1 | where used  |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| CODES      | range  | PRIMARY         | PRIMARY      |           |
|    178 |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+
| ACPRICEALG | eq_ref | PRIMARY         | PRIMARY      |         8 |
ACMED.Phar,  |      1 | where used  |
|            |        |                 |              |           |
PPUB         |        |             |
+------------+--------+-----------------+--------------+-----------+----
----------+--------+-------------+

That did not look too bad to me, but still the query takes so long to
execute, the client-browser times out.
So far I'm not even sure I'll get results, apart from the fact that I
don't get a Syntax Error...

Table Sizes:
table       Records
AC           83674
ACCOMP      242924
ACMED        13605
ACNAM       167348
ACPRICEALG  191212
ACSC         53514
CODES        15974
COMP          2065
SC            6710


Expected Result-Sets:
Anything from 2 to 1000

suggestions?
--
mit freundlichen Grüssen / best regards

Hannes Wyss
XML Developer

+41 1 350 85 86

www.ywesee.com > intellectual capital connected > www.faeh-wuest.ch

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail
<[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to