Wracamy do tematu. Tab1 jest tu najważniejsza - jest to rejestr rekordów (np. kolumna13 - czy usunięty?, kolumna_5 - typ dokumentu, kolumna_11 - firma).
Tab2 to już właściwa tabela dokumentu.
tab1 ma 150 000 rekordów. Z
order by potrafi sie wykonywać czasami AŻ 2,5 minuty, a bez tego 0,015 sek
SELECT *
FROM tab2
INNER JOIN tab1
ON tab1.id = tab2.id
LEFT JOIN tab4
ON tab1.sid = tab4.bid
LEFT JOIN tab3
ON tab3.aid = tab2.TO
LEFT JOIN tab5
ON tab5.cid = tab2.cid
WHERE
tab1.kolumna_5 = 'typ'
AND tab1.kolumna_13 = 0
AND tab1.kolumna_11 = 3
ORDER BY tab2.id
CREATE TABLE `tab1` (
`kolumna_1` int(19) NOT NULL AUTO_INCREMENT,
`kolumna_2` int(19) NOT NULL DEFAULT '0',
`kolumna_3` int(19) NOT NULL DEFAULT '0',
`kolumna_4` int(19) NOT NULL DEFAULT '0',
`kolumna_5` varchar(30) COLLATE utf8_polish_ci NOT NULL,
`kolumna_6` text COLLATE utf8_polish_ci,
`kolumna_7` datetime DEFAULT NULL,
`kolumna_8` datetime DEFAULT NULL,
`kolumna_9` datetime DEFAULT NULL,
`kolumna_10` varchar(50) COLLATE utf8_polish_ci DEFAULT NULL,
`kolumna_11` int(19) NOT NULL DEFAULT '0',
`kolumna_12` int(1) DEFAULT '1',
`kolumna_13` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`kolumna_1`),
KEY `kolumna_2_idx` (`kolumna_2`),
KEY `kolumna_3_idx` (`kolumna_13`,`kolumna_3`),
KEY `kolumna_13` (`kolumna_3`,`kolumna_13`),
KEY `kolumna_5` (`kolumna_5`,`kolumna_13`),
KEY `kolumna_11` (`kolumna_5`,`kolumna_11`,`kolumna_13`)
) ENGINE=InnoDB AUTO_INCREMENT=149352 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci
CREATE TABLE `tab2` (
`column_id` int(19) NOT NULL AUTO_INCREMENT,
`column_2` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column3` date DEFAULT NULL,
`column4` decimal(6,0) DEFAULT NULL,
`column5` decimal(6,0) DEFAULT NULL,
`column6` int(19) NOT NULL DEFAULT '0',
`column7` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column8` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column9` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column10` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column11` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column12` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column13` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column14` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column15` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`column16` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column17` decimal(6,0) DEFAULT NULL,
`column18` decimal(6,0) DEFAULT NULL,
`column19` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`column20` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column21` decimal(25,2) DEFAULT NULL,
`column22` decimal(25,2) DEFAULT NULL,
`column23` decimal(25,2) DEFAULT NULL,
`column24` decimal(25,2) DEFAULT NULL,
`column25` decimal(25,2) DEFAULT NULL,
`column26` decimal(25,2) DEFAULT NULL,
`column27` decimal(25,2) DEFAULT NULL,
`column28` decimal(25,2) DEFAULT NULL,
`column29` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column31` decimal(10,0) DEFAULT NULL,
`column32` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column33` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column34` date DEFAULT NULL,
`column35` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column36` int(19) DEFAULT NULL,
`column37` varchar(19) COLLATE utf8_polish_ci DEFAULT NULL,
`column38` date DEFAULT NULL,
`column39` decimal(6,0) DEFAULT NULL,
`column40` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column41` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column42` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`column43` decimal(10,2) DEFAULT NULL,
`column44` decimal(10,2) DEFAULT NULL,
`column45` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column46` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column47` decimal(10,0) DEFAULT NULL,
`column48` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column49` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column50` date DEFAULT NULL,
`column51` decimal(10,0) DEFAULT NULL,
`column52` decimal(10,0) DEFAULT NULL,
`column53` decimal(26,0) DEFAULT NULL,
`column54` decimal(26,0) DEFAULT NULL,
`column55` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column56` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column57` varchar(3) COLLATE utf8_polish_ci DEFAULT '0',
`column58` varchar(3) COLLATE utf8_polish_ci DEFAULT '0',
`column59` varchar(255) COLLATE utf8_polish_ci DEFAULT '',
`column60` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`column61` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
`column62` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
PRIMARY KEY (`column_id`),
KEY `column_2` (`column_2`)
) ENGINE=InnoDB AUTO_INCREMENT=149225 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci