У меня есть база данных более 2 000 000 записей.Мне нужно иметь возможность быстро сортировать по любому из 30 полей в таблице.
Я устал добавлять индексы, но, похоже, он не увеличил скорость заказа по предложению.
Вот моя структура таблицы:
CREATE TABLE `tblM` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fld1` varchar(1024) NOT NULL,
`fld2` varchar(1024) NOT NULL,
...
PRIMARY KEY (`id`),
KEY `fld1` (`fld1`(1000)),
KEY `fld2` (`fld2`(1000)),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21748375 ;
Это пример запроса, который я выполняю:
SELECT id, fld1, fld2 FROM tblM ORDER BY fld2 ASC LIMIT 30
Однако выполнение занимает около 15 секунд.Есть ли способ, с помощью которого эти типы запросов могут выполняться за <1 сек? </p>
Сортировка по первичному ключу выполняется только быстро, занимает 0,0017 сек, было бы неплохо иметь другие поля с такой же производительностью.Дисковое пространство не имеет значения.