Оптимизация медленно выполняющегося MySQL запроса

Рейтинг: 0Ответов: 0Опубликовано: 30.04.2015

Имеется таблица и в ней 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;

Ответы

Ответов пока нет.