SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.02.2012 19:37:08

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

проблема при сортировки медленный запрос

есть таблица древовидного меню

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)

Неактивен

 

#2 29.02.2012 20:06:32

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблема при сортировки медленный запрос

Он реально медленный или вам просто не нравиться EXPLAIN?
В данном случае оптимизатор предпочел full scan. Можно попробовать указать обязательное использование KEY `NSLeft` с помощью директивы force index, но с таким методом нужно быть осторожным. Можно получить красивый план сейчас и реально медленный запрос потом (с ростом таблицы).

Неактивен

 

#3 29.02.2012 21:14:43

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: проблема при сортировки медленный запрос

он выполняется быстро. 0,06 но в логах он постоянно висит

Неактивен

 

#4 01.03.2012 02:12:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: проблема при сортировки медленный запрос

В каких логах?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson