SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 14.05.2013 06:00:50

Viktor_007
Участник
Зарегистрирован: 14.05.2013
Сообщений: 1

Оптимизация запроса с JOIN

Нужно оптимизировать следующий запрос:

SELECT pages.id
        FROM pages
        LEFT OUTER JOIN clik ON ((pages.id = clik.postid)
            and (clik.uid ='.$_SESSION['uid'].'))
        WHERE clik.id is null
        ORDER BY ID DESC
        LIMIT 0 , 15

Смысл в том что бы  показать пользователю 15 страничек, которые он еще не видел.
Сооветственно после просмотра странички в clik добавляется запись и  при следующем запросе
страничка не выводится.

Структура таблиц:

[syntax=mysql]CREATE TABLE IF NOT EXISTS `clik` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `postid` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `postid` (`postid`),
  KEY `uid` (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `pages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `adddate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`),
  KEY `id` (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
[/syntax]

Очень редко пишу на форумах, обычно разбираюсь сам но здесь действительно нужна помощь.
Проект становится высоконагруженным, голова пухнет от всех этих оптимизаций.

Неактивен

 

#2 14.05.2013 13:17:33

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Оптимизация запроса с JOIN

А причина оптимизации какая? Этот запрос тормозит или что? Вообще запрос в том виде который написан работать не должен, так как ORDER BY id даст неопределенность по какому id сортировать.

Напрашивается индекс

KEY `postid` (`postid`,`uid`),

Неактивен

 

Board footer

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