Оптимизация медленно выполняющегося MySQL запроса
Имеется таблица и в ней 15000 записей.
Скорость выполнения запроса составляет целых 0.5 секунды.
Как подобное можно оптимизировать?
Запрос:
SELECT `cat`.*,
(SELECT COUNT(1)
FROM `board`
WHERE `board`.`podcat` = `cat`.`id`
AND `status` = '1'
AND `timesrok` > '".intval($realtime)."') AS `count_board`
FROM `cat`
WHERE `ref` = '".intval($cat['id'])."'
ORDER BY `realid` ASC
Структура таблицы
CREATE TABLE IF NOT EXISTS `board` (
`id` int(11) auto_increment,
`id_user` int(11) NOT NULL,
`cat` int(11) NOT NULL,
`podcat` int(11) NOT NULL,
`name` varchar(250) NOT NULL,
`name_translate` varchar(500) NOT NULL,
`file` varchar(50) NOT NULL,
`foto` varchar(50) NOT NULL,
`fotka` varchar(50) NOT NULL,
`screen` varchar(50) NOT NULL,
`size` varchar(50) NOT NULL,
`size_convert` varchar(50) NOT NULL,
`price` varchar(11) NOT NULL,
`telefon` varchar(13) NOT NULL,
`email` varchar(32) NOT NULL,
`contact` varchar(32) NOT NULL,
`send` int(1) NOT NULL default '0',
`city` varchar(32) NOT NULL,
`skype` varchar(32) NOT NULL,
`time` int(11) NOT NULL,
`timeupdate` int(11) NOT NULL,
`timesrok` int(11) NOT NULL,
`top` int(1) NOT NULL default '0',
`toptime` int(11) NOT NULL,
`srochno` int(1) NOT NULL default '0',
`timesrochno` int(11) NOT NULL,
`vydelit` int(1) NOT NULL default '0',
`timevydelit` int(11) NOT NULL,
`torg` int(1) NOT NULL default '0',
`by` int(1) NOT NULL default '0',
`free` int(1) NOT NULL default '0',
`status` int(1) NOT NULL default '2',
`convert` int(1) NOT NULL default '2',
`type` int(1) NOT NULL default '0',
`activation` int(1) NOT NULL default '0',
`count` int(11) NOT NULL default '0',
`text` varchar(5000) NOT NULL,
`prosmotrov` int(11) NOT NULL,
`lat` varchar(11) NOT NULL,
`lng` varchar(11) NOT NULL,
`watermark` int(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
И второй
--
-- Структура таблицы `cat`
--
DROP TABLE IF EXISTS `cat`;
CREATE TABLE IF NOT EXISTS `cat` (
`id` int(11) auto_increment,
`ref` int(11) NOT NULL,
`realid` int(11) NOT NULL,
`name` varchar(500) NOT NULL,
`translate` varchar(500) NOT NULL,
`keywords` varchar(5000) NOT NULL,
`logo` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Источник: Stack Overflow на русском