Einfaches SQL Query mit dramatischer Performance. HILFE!
Guten Abend,
ich weiß nicht ob ich hier richtig bin, vielleicht kann mir doch jemand bei meinem Problem helfen.
Ich führe eine einfache Abfrage über 2 Tabellen durch, das Ergebnis wird in eine MEMORY Tabelle geschrieben. Soweit so gut, jedoch dauert die Abfrage fast 2 Stunden!
Query:
CREATE TABLE tbl_1 engine=heap
SELECT
res_db.sub_id,
res_db.kw_id,
res_db.kw
FROM res_db , dom_db
WHERE
dom_db.index_1 IN ( 'a', 'b' ) AND
res_db.sub_id = dom_db.sub_id
Die Tabelle res_db hat ca. 50.000.000 Datensätze,
Die Tabelle dom_db ca. 16.000.000 Datensätze
Die Abfrage der dom_db SELECT COUNT(*) FROM dom_db WHERE index_1 IN ( 'a', 'b' ) liefert ca. 2.500.000 Datensätze zurück.
In die MEMORY Tab tbl_1 werden ca. 4.500.000 Datensätze geschrieben.
Indexe res_db :
Index 1: PRIMARY auf AI der Tabelle
Index 2: sub_id
Indexe dom_db :
Index 1: PRIMARY auf AI der Tabelle
Index 2: sub_id, index_1
Index 3: index_1, sub_id
EXPLAIN liefert:
res_db: TYPE:all, POSSIBLE_KEYS: sub_id, KEY:null
dom_db: TYPE:eq_ref, POSSIBLE_KEYS:PRIMARY,sub_id,index_1, KEY: xx_db.res_db.sub_id
Grenze ich die Abfrage ein, z.B. WHERE ... IN ('a'), folgt
'1', 'SIMPLE', 'db__domains', 'range', 'PRIMARY,sub_id,index_1', 'index_1', ?, NULL, '1540437', 'Using where; Using index'
'1', 'SIMPLE', 'res_db', 'ref', 'sub_id', 'sub_id', ?, 'xx_db.db__dom.sub_id', '26', ''
An der Abfrageschwindigkeit ändert sich jedoch nichts.
Rechner: Opteron 1.8gHz mit 2 Kernen, 8GB Ram, CentOS 5, Mysql 5.0.45
Auf dem Rechner läuft nichts anderes als MySQL
Mir ist klar, dass die Abfrage etwas Zeit erfordert und event. ein Tabellenscan durchgeführt wird, jedoch tut der Rechner nichts:
HD Durchsatz lesen: 800-1500kBytes/s (im Vergleich 70.000kBytes/s bei LOAD INDEX INTO CACHE), CPU liegt bei ca. 7%
Habe schon so einiges versucht, unter anderem
SELECT ... FROM res_db WHERE sub_id IN (SELECT sub_id FROM dom_db WHERE index_1 in ('a','b')
FORCE INDEX (sub_id)
Nichts hat sich geändert.
Kann mir jemand helfen?
Vielen Dank im Voraus,
Aleksander
|