Привет, прошу помощи в оптимизации запроса, индекса или таблицы в целом... Есть запрос
SELECT DISTINCT i.`id`, i.`name`
FROM `p_items` as i, `p_cats_sync` as c
WHERE c.`id` = i.`id`
AND c.`cat_id` IN (109,152,153,156,157,158,161,163,166,140,266)
AND c.`status` = 1
AND c.`p_status` = 1
ORDER BY i.`status` DESC, i.`views` DESC
LIMIT 40, 10;
EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c range PRIMARY,id PRIMARY 4 NULL 412 Using where; Using index; Using temporary; Using f...
1 SIMPLE i ref PRIMARY PRIMARY 3 c.id 1
Таблицы:
CREATE TABLE IF NOT EXISTS `p_items` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`status` tinyint(1) unsigned NOT NULL,
`views` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`,`status`,`views`),
UNIQUE KEY `status` (`status`,`views`,`id`),
KEY `views` (`views`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2594 ;
CREATE TABLE IF NOT EXISTS `p_cats_sync` (
`id` mediumint(8) unsigned NOT NULL COMMENT '',
`cat_id` smallint(5) unsigned NOT NULL COMMENT '',
`status` tinyint(1) unsigned NOT NULL COMMENT '',
`p_status` tinyint(1) NOT NULL COMMENT '',
PRIMARY KEY (`cat_id`,`status`,`p_status`,`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Запрос выполняется очень долго (~0.4-0.5s), даже на не очень большой БД (порядка 1400 записей) Пробовал просто запрос
EXPLAIN SELECT DISTINCT c.`id`
FROM `p_cats_sync` AS c
WHERE c.`cat_id` IN ( 109, 152, 153, 156, 157, 158, 161, 163, 166, 140, 266 )
AND c.`status` =1
AND c.`p_status` =1
Выполняется быстро, хоть и с временной таблицей, убрать ее не получается :(
1 SIMPLE c range PRIMARY PRIMARY 4 NULL 412 Using where; Using index; Using temporary
Прошу помощи в оптимизации, т.к. количество записей растет очень быстро
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть два столбца, это id(AUTO_INCREMENT) и text(TEXT)Как при добавлении строчки(INSERT) проверять уникальность text, и если найден дубликат то ничего не делать...
Добрый день, имеется список объектов (Photo, Video, Gallery, PhotoMode, VideoMode)Как можно получить галерею по её имени? Пока что идея такая:
Есть структура данных (С#) необходимо принимая данные из SerialPort записать их в структуру побайтно