Hi Leutz,
ich habe eine MySQL-Tabelle, welche sehr grosse Datenmengen im siebenstelligen Bereich beinhaltet. Diese Tabelle hat folgende Struktur:
CREATE TABLE IF NOT EXISTS hisdata
(
ID
bigint(10) NOT NULL AUTO_INCREMENT,
CURRENCY
varchar(10) NOT NULL,
TIMESTAMP
bigint(30) NOT NULL,
BID
double NOT NULL,
ASK
double NOT NULL,
PRIMARY KEY (ID
),
KEY index\_ts
(TIMESTAMP
),
KEY index\_curr
(CURRENCY
),
KEY TIMESTAMP
(TIMESTAMP
),
KEY CURRENCY
(CURRENCY
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6559667 ;
Wenn ich auf diese Tabelle nun eine SELECT-Abfrage wie:
SELECT * FROM hisdata WHERE CURRENCY = 'EURUSD' AND TIMESTAMP >= 633 347424000000000 AND TIMESTAMP <= 633398400000000000 ORDER BY TIMESTAMP ASC LIMIT 0,100000
ausführe, dauert das extrem lange. Für 100000 Datensätze braucht er ca. 10 Sekunden. Das muss deutlich schneller gehen. Ich habe, wie bereits zu sehen ist, Indizes auf die Spalten CURRENCY und TIMESTAMP gesetzt, da nach den Werten dieser Spalten auch gesucht wird. Leider hat das zu vorher auch keine grossen Performance-Verbesserungen gebracht. Hat jemand von Euch eine Idee, wie man die Performance hier steigern kann? Bin für jeden Tip dankbar.
Gruß,
Chris