В моей базе данных есть транзакции с именами таблиц, в которых содержится 20000 записей. Когда я запускаю этот запрос
SELECT T1.* FROM transactions AS T1
WHERE T1.ppno IN
(SELECT T2.PPNO FROM transactions AS T2
WHERE T2.ppno = T1.ppno
HAVING COUNT(T2.ppno) = $doublescount)
ORDER BY T1.ppno,T1.numb
для запуска требуется не менее 3 минут. Как ускорить этот запрос?
Редактировать
show create table transactions
возвращается как
CREATE TABLE `transactions` (
`eidx` int(10) unsigned NOT NULL,
`numb` int(10) unsigned NOT NULL,
`date` date NOT NULL,
`time` varchar(45) NOT NULL,
`name` varchar(45) NOT NULL,
`add1` varchar(45) NOT NULL,
`add2` varchar(45) NOT NULL,
`city` varchar(45) NOT NULL,
`phno` varchar(45) NOT NULL,
`nati` varchar(45) NOT NULL,
`ppno` varchar(45) NOT NULL,
`cuam` varchar(45) NOT NULL,
`tcam` varchar(45) NOT NULL,
`valu` varchar(45) NOT NULL,
`srch` varchar(45) NOT NULL,
`stax` varchar(45) NOT NULL,
`taxp` varchar(45) NOT NULL,
`roun` varchar(45) NOT NULL,
`amnt` varchar(45) NOT NULL,
`encd` varchar(45) NOT NULL,
`mocd` varchar(45) NOT NULL,
`endt` varchar(45) NOT NULL,
`modt` varchar(45) NOT NULL,
`sflg` varchar(5) NOT NULL,
`category` varchar(45) NOT NULL DEFAULT 'NA',
`branch` varchar(10) NOT NULL,
PRIMARY KEY (`numb`,`branch`,`date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED