Huhu, ich schonwieder ;)
ich erhoffe mir hier einen kleinen rat zu ergattern: ich habe eine ziemlich alte datenbank in mysql, die tabellen sind noch myisam
folgender aufbau:
CREATE TABLE `arbeitskarten` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`refid` bigint(20) NOT NULL DEFAULT '0',
`pos` int(11) NOT NULL DEFAULT '0',
`user` tinyblob NOT NULL,
`datum` date NOT NULL DEFAULT '0000-00-00',
`abnr` varchar(60) NOT NULL,
`kundename` tinytext NOT NULL,
`artnr` int(11) NOT NULL DEFAULT '0',
`text` longtext NOT NULL,
`lastchange_text` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`menge` decimal(5,1) NOT NULL DEFAULT '0.0',
`typ` varchar(30) NOT NULL DEFAULT '',
`untrtyp` varchar(30) NOT NULL DEFAULT '',
`ok` char(1) NOT NULL DEFAULT '0',
`beendet` char(1) NOT NULL DEFAULT '0',
`eingetragen_durch` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `refid` (`refid`),
KEY `datum` (`datum`),
KEY `user` (`user`(10)),
KEY `artnr` (`artnr`),
KEY `typ` (`typ`),
KEY `ok` (`ok`),
KEY `beendet` (`beendet`),
KEY `abnr` (`abnr`)
) ENGINE=MyISAM
dazu gibt es dann noch:
CREATE TABLE `arbeitskarten_zeiten` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`refid` bigint(20) NOT NULL DEFAULT '0',
`start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ende` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`artnr` bigint(20) NOT NULL DEFAULT '0',
`user` tinyblob NOT NULL,
PRIMARY KEY (`id`),
KEY `refid` (`refid`),
KEY `user` (`user`(10)),
KEY `ende` (`ende`),
KEY `artnr` (`artnr`)
) ENGINE=MyISAM
(ich weiß, artnr und user haben da nix mehr drin verloren, da die refid sich auf die id in der tabelle arbeitskarten bezieht, aber wie gesagt, is uralt ;)
nun ist es so, dass teilweise abfragen wie folgt getätigt werden:
SELECT SUM(TIME_TO_SEC(TIMEDIFF(ende, START))) AS zeit FROM arbeitskarten_zeiten WHERE ende!='0000-00-00 00:00:00' AND refid IN (SELECT id FROM arbeitskarten WHERE artnr='20' AND typ='reparatur')
solch eine abfrage dauert ziemlich lange, wenn ich diese abfragre ungecached ausführe auf meinem testsystem 6016 ms
(btf: diese abfrage liefert unter der tabelle arbeitskarten genau 1 einergebnis)
die tabellen ansich sind mittlerweile relativ groß
arbeitskarten hat 122522 zeilen
arbeitskarten_zeiten hat mittlerweile 104066 zeilen
(mich wundert, dass zweitere weniger zeilen hat ... naja, glaub da war mal ne umstellung wo einiges raus geflogen ist ...)
hat jemand eine idee wie man hier mit mysql noch schneller arbeiten könnte?
achja: mysql 5.5.16 Community Server
danke schonmal!