Привет У меня есть таблица, называемая train_stop, которая имеет ~ 1 миллион строк.Индексирование Mysql Group BY Query
У меня после query-
SELECT * FROM (SELECT * FROM train_stop where code='XYZ' AND active=1 UNION SELECT * FROM train_stop where code='ABC' UNION SELECT * FROM train_stop where code='STU'......) AS t3 GROUP BY t3.number order by departs
Этот запрос использует только одну таблицу train_stop
. Сначала я выбираю определенные строки на основе code
, а затем группирую их по number
. Я попытался индексировать разные столбцы, но выше запроса всегда используется using temporary, using filesort
. Время выполнения составляет порядка секунд. Скажите, может ли быть лучший способ написать выше стратегию запроса и индексации, чтобы оптимизировать и получить результаты в миллисекундах. Ваша помощь будет очень полезна.
Create Statement is `CREATE TABLE `train_stop` (
`number` varchar(1000) NOT NULL,
`stop_number` int(11) NOT NULL,
`code` varchar(1000) NOT NULL,
`station name` varchar(1000) NOT NULL,
`arrives` time NOT NULL,
`departs` time NOT NULL,
`halt` varchar(1000) NOT NULL,
`pf` varchar(1000) NOT NULL,
`day` int(11) NOT NULL,
`km` varchar(1000) NOT NULL,
`speed` varchar(1000) NOT NULL,
`elev` varchar(1000) NOT NULL,
`zone` varchar(1000) NOT NULL,
`address` varchar(1000) NOT NULL,
`active` int(11) DEFAULT '1',
KEY `index_1` (`number`(767),`code`(767)),
KEY `PIndex` (`number`(767),`stop_number`),
KEY `three_columns_idx` (`code`(767),`active`,`departs`),
KEY `two_columns_idx` (`code`(767),`active`),
KEY `two_columns_group_idx` (`number`(767),`departs`),
KEY `one_columns_group_idx` (`departs`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1`
так могли бы вы опубликовать ваш запрос 'CREATE TABLE'? и какой у вас сервер MySQL или MS SQL? вам нужно выбрать только один и пометить его – Alex
, просто немного расследуйте свой запрос. Что ты здесь делаешь??? почему вы 'UNION' таблицы себя много раз ???? и почему вы публикуете только часть своего запроса? если вам нужна помощь, вы должны отправить полный запрос. – Alex
Кто создал эту структуру таблицы ??? почему '\' число \ varchar (1000) NOT NULL, '?? Вы знаете, что это значит? 'varchar (1000)' является огромным ключом !!! кому это нужно? – Alex