Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Using filesort
 
 автор: diablo_   (21.08.2009 в 20:24)   письмо автору
 
 

Доброго времени суток!
Есть таблица:

CREATE TABLE `test_sort` (
  `id` int(11) NOT NULL auto_increment,
  `id_section` tinyint(4) NOT NULL default '0',
  `counts` int(11) NOT NULL default '0',
  `comment` int(5) NOT NULL default '0',
  `date` int(10) NOT NULL default '0'
  PRIMARY KEY  (`id`),
  KEY `id_section` (`id_section`,`date`)
) ENGINE=MyISAM AUTO_INCREMENT=3924 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3924 ;
        


Есть запрос:
SELECT `id`,  `comment` FROM `test_sort` WHERE `id_section`='1' ORDER BY `date` DESC

Этот запрос, рабоатет отлично! С ним всё в порядке, Using filesort не выводится!
А если я попытаюсь сделать вот такой запрос:
SELECT `id`,  `comment` FROM `test_sort` WHERE `id_section`='1' ORDER BY `comment` DESC

То Using filesort выскакивает как и при сортировке по counts! Как нужно расставить индексы и что нужно добавить, что бы Using filesort не было?

вот так вот добавить
KEY `id_section` (`id_section`,`comment`)
пробовал, не работает!

  Ответить  
 
 автор: Fractured   (21.08.2009 в 21:31)   письмо автору
 
   для: diablo_   (21.08.2009 в 20:24)
 

Ни столбец date, ни comment не участвуют в условии запроса. Вам нужно добавить просто KEY `id_section_idx` (`id_section`).

И желательно писать`id_section`= 1 (без кавычек), если это число.

  Ответить  
 
 автор: Diablo_   (22.08.2009 в 01:18)   письмо автору
 
   для: Fractured   (21.08.2009 в 21:31)
 

А почему число надо без кавычек писать?

  Ответить  
 
 автор: Trianon   (22.08.2009 в 01:35)   письмо автору
 
   для: Diablo_   (22.08.2009 в 01:18)
 

По большлму счету - по той же причине, по которой в повседневной жизни Вы не ставите кавычек вокруг чисел.

  Ответить  
 
 автор: Trianon   (22.08.2009 в 00:25)   письмо автору
 
   для: diablo_   (21.08.2009 в 20:24)
 

> вот так вот добавить
> KEY `id_section` (`id_section`,`comment`)
> пробовал, не работает!

Чего не делает?

  Ответить  
 
 автор: Diablo_   (22.08.2009 в 01:16)   письмо автору
 
   для: Trianon   (22.08.2009 в 00:25)
 

не исчезает "Using filesort"
Если удалить
KEY `id_section` (`id_section`,`date`)
и вписать
KEY `id_section` (`id_section`,`comment`)
то при запросе
EXPLAIN SELECT `id`, `comment` FROM `test_sort` WHERE `id_section`='1' ORDER BY `comment` DESC
"Using filesort" исчезает!

А сразу оба
KEY `id_section` (`id_section`,`date`)
KEY `id_section` (`id_section`,`comment`)
не работают!

  Ответить  
 
 автор: Trianon   (22.08.2009 в 01:36)   письмо автору
 
   для: Diablo_   (22.08.2009 в 01:16)
 

Я всё ж добью. Если время позволит. Завтра день занят. Впрочем, может кто продолжит...

>А сразу оба
>KEY `id_section` (`id_section`,`date`)
>KEY `id_section` (`id_section`,`comment`)
>не работают!

Кто не работают?
В чем это выражается?

  Ответить  
 
 автор: Diablo_   (22.08.2009 в 02:05)   письмо автору
 
   для: Trianon   (22.08.2009 в 01:36)
 

В том, что используеся сортировка "Using filesort"
Почему если я прописываю вот этот ключ
KEY `id_section` (`id_section`,`date`)
она не используется!?
а если прописываю ещё и этот
KEY `id_section` (`id_section`,`comment`)
она используется???

  Ответить  
 
 автор: Trianon   (22.08.2009 в 02:18)   письмо автору
 
   для: Diablo_   (22.08.2009 в 02:05)
 

>а если прописываю ещё и этот
То есть создать два индекса у Вас получилось?

>она используется???
Вы меня спрашиваете?
Вы же видите результаты эксплейнов, а не я.

  Ответить  
 
 автор: Diablo_   (22.08.2009 в 12:09)   письмо автору
 
   для: Trianon   (22.08.2009 в 02:18)
 

Я на том форуме, довольно давно и тебя знаю, очень хорошо!))) Часто видел втои ответы вопросы и тд)))
Вот зная, что ты будешь задавать кучу глупых вопросов)))))))) я специально БД и запросы приложил! Ну вставь их в мускул да проверь! И ты сам всё увидешь!

  Ответить  
 
 автор: Trianon   (22.08.2009 в 23:15)   письмо автору
 
   для: Diablo_   (22.08.2009 в 12:09)
 

Что ж ... задайте один умный.

  Ответить  
 
 автор: Diablo_   (23.08.2009 в 03:20)   письмо автору
 
   для: Trianon   (22.08.2009 в 23:15)
 

я уже трижды его задал!
Почему приспользовани ключевых полей: KEY `id_section` (`id_section`,`date`) "Using filesort" не используется?
А при условии других ключевых полей:KEY `id_section` (`id_section`,`comment`) "Using filesort"
используется?

  Ответить  
 
 автор: Trianon   (23.08.2009 в 11:09)   письмо автору
 
   для: Diablo_   (23.08.2009 в 03:20)
 

умный

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования