есть таблица древовидного меню
CREATE TABLE IF NOT EXISTS `info_menu` (
`id` int(11) unsigned NOT NULL auto_increment,
`menu` varchar(200) NOT NULL,
`title` varchar(200) NOT NULL,
`link` varchar(200) NOT NULL,
`linktype` varchar(12) NOT NULL default 'link',
`linkid` varchar(25) default '-1',
`target` varchar(8) NOT NULL default '_self',
`component` varchar(100) NOT NULL,
`ordering` int(11) NOT NULL default '1',
`published` int(11) NOT NULL,
`template` varchar(30) NOT NULL,
`access_list` tinytext NOT NULL,
`iconurl` varchar(100) NOT NULL,
`NSLeft` int(11) NOT NULL,
`NSRight` int(11) NOT NULL,
`NSLevel` int(11) NOT NULL,
`NSDiffer` int(11) NOT NULL,
`NSIgnore` int(11) NOT NULL,
`parent_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `menu` (`menu`),
KEY `NSLeft` (`NSLeft`,`NSRight`,`parent_id`),
KEY `parent_id` (`parent_id`),
KEY `published` (`published`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=241 ;
При получении хлебных крошек, не получается оптимитизировать запрос
EXPLAIN SELECT id, title, link, linktype
FROM info_menu
WHERE NSLeft <=12
AND NSRight >=13
AND parent_id >0
ORDER BY NSLeft;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE info_menu ALL NSLeft,parent_id NULL NULL NULL 13 Using where; Using filesort
Как такой запрос можно оптимизировать
Отредактированно forlord (29.02.2012 19:37:45)