Hi,
AFAIK, to optimize your query you should have :
1 index on B.KEYWORDS. (I assume it's the KD_KW_KI_IDX_0806120615 index ?)
1 index on C.KR_ID. Your index is not UNIQUE here, is this expected ?
1 index unique on A.CLUSTER_ID (it's already the case)
BTW, why are you using a derived table here ?
You could write directly :
select A.LEAF_CATEG_ID, A.CLUSTER_ID, A.SIGNATURE,
A.IS_NULL, A.HEIGHT, A.NO_LISTINGS, A.NO_SUCC_LISTINGS,
A.TOTAL_QTY,A.SOLD_QTY, A.ASP, A.NO_BIDS, A.MIN_PRICE, A.MAX_PRICE,
A.MIN_ITEM_ID, A.MAX_ITEM_ID from C_DATA A, R_DATA B, ER_MAP C where
B.KEYWORDS IN ('CAMERA') and B.KR_ID = C.KR_ID and C.CLUSTER_ID =
A.CLUSTER_ID limit 40
Regards,
Jocelyn Fournier
Ananda Kumar a écrit :
explain select * from (select A.LEAF_CATEG_ID, A.CLUSTER_ID, A.SIGNATURE,
A.IS_NULL, A.HEIGHT, A.NO_LISTINGS, A.NO_SUCC_LISTINGS,
A.TOTAL_QTY,A.SOLD_QTY, A.ASP, A.NO_BIDS, A.MIN_PRICE, A.MAX_PRICE,
A.MIN_ITEM_ID, A.MAX_ITEM_ID from C_DATA A, R_DATA B, ER_MAP C where
B.KEYWORDS IN ('CAMERA') and B.KR_ID = C.KR_ID and C.CLUSTER_ID =
A.CLUSTER_ID ) A limit 40\G;
*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: <derived2>
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 3231
Extra:
*************************** 2. row ***************************
id: 2
select_type: DERIVED
table: B
type: ref
possible_keys: PRIMARY,KD_KW_KI_IDX_0806120615
key: KD_KW_KI_IDX_0806120615
key_len: 767
ref:
rows: 720
Extra: Using where; Using index
*************************** 3. row ***************************
id: 2
select_type: DERIVED
table: C
type: ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 10
ref: reh.B.kr_id
rows: 1
Extra: Using index
*************************** 4. row ***************************
id: 2
select_type: DERIVED
table: A
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 10
ref: reh.C.cluster_id
rows: 1
Extra:
4 rows in set (0.03 sec)
ERROR:
No query specified
On 6/22/08, Moon's Father <[EMAIL PROTECTED]> wrote:
Can you show us the proper view of your sql statement by adding \G.
On Sat, Jun 21, 2008 at 1:57 PM, Ananda Kumar <[EMAIL PROTECTED]> wrote:
The below query performance in 10 sec when there are no other activity on
db
, but when any insert or LOAD DATA Index creation happens it takes close
to
80 sec. Any ways to improve the performance of this sql.
innodb_buffer=11GB , key_buffer=3 GB, we have totally 16GB
EXPLAIN select * from (select A.LEAF_CATEG_ID, A.CLUSTER_ID, A.SIGNATURE,
A.IS_NULL, A.HEIGHT, A.NO_LISTINGS,
A.NO_SUCC_LISTINGS,
A.TOTAL_QTY,A.SOLD_QTY, A.ASP, A.NO_BIDS, A.MIN_PRICE, A.MAX_PRICE,
A.MIN_ITEM_ID, A.MAX_ITEM_ID from C_DATA A,
R_DATA B, ER_MAP C where B.KEYWORDS IN ('CAMERA') and B.KR_ID = C.KR_ID
and
C.CLUSTER_ID = A.CLUSTER_ID ) A limit
40;
+----+-------------+------------+--------+---------------------------------+-------------------------+---------+-------------
----------+------+--------------------------+
| id | select_type | table | type | possible_keys
|
key | key_len | ref
| rows | Extra |
+----+-------------+------------+--------+---------------------------------+-------------------------+---------+-------------
----------+------+--------------------------+
| 1 | PRIMARY | <derived2> | ALL | NULL
|
NULL | NULL | NULL
| 3278 | |
| 2 | DERIVED | B | ref | PRIMARY,KD_KW_KI_IDX_0805230323
|
KD_KW_KI_IDX_0805230323 | 767 |
| 1524 | Using where; Using index |
| 2 | DERIVED | C | ref | PRIMARY
|
PRIMARY | 10 |
reh.B.kr_id | 1 | Using index |
| 2 | DERIVED | A | eq_ref | PRIMARY
|
PRIMARY | 10 |
reh.C.cluster_id | 1 | |
+----+-------------+------------+--------+---------------------------------+-------------------------+---------+-------------
----------+------+--------------------------+
--
I'm a MySQL DBA in china.
More about me just visit here:
http://yueliangdao0608.cublog.cn
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]