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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как правильно расставить индексы?

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (05.08.2006 в 11:06)   письмо автору
 
   для: JIEXA   (05.08.2006 в 10:49)
 

Хм... странно, таблица вроде не большая, а частота приличная, если бы индекс использовался бы - он бы 100% был бы в кэше индексов.

   
 
 автор: JIEXA   (05.08.2006 в 10:49)   письмо автору
 
   для: cheops   (05.08.2006 в 10:30)
 

Примерно 15.000 записисей, запрос выполняется порядко 50 раз в минуту как минимум

   
 
 автор: cheops   (05.08.2006 в 10:30)   письмо автору
 
   для: JIEXA   (04.08.2006 в 23:56)
 

Объём таблиц большой? Если да, это вполне вероятно. Часто ли выполняется запрос?

   
 
 автор: JIEXA   (04.08.2006 в 23:56)   письмо автору
 
   для: cheops   (04.08.2006 в 22:11)
 

Хм, сделал один индекс для трех полей news_open, news_main, news_active и отдельный для news_dateorder. И время выполнения запроса увеличилось в три раза. Убрал.. Оставил только news_dateorder и время генерации уменьшилось в 2 раза, чем было до указания каких-либо индексов. Но почему? Почему индекс по трем полям (news_open, news_main, news_active) замедляет время выполнения запроса? Ведь должно быть наоборот

   
 
 автор: JIEXA   (04.08.2006 в 23:50)   письмо автору
 
   для: cheops   (04.08.2006 в 22:11)
 

Спасибо, тоесть индексы надо создавать для полей, которые стоят в WHERE также для полей по которым идет сортировка?

P.S. Надо перечитать материал про индексы в вашей книге... А то я читал что-то, но всё равно не допер :(

   
 
 автор: cheops   (04.08.2006 в 22:11)   письмо автору
 
   для: JIEXA   (04.08.2006 в 16:23)
 

Можно для news_dateorder отдельный индекс создать.

   
 
 автор: JIEXA   (04.08.2006 в 16:23)   письмо автору
 
   для: cheops   (04.08.2006 в 14:58)
 

А инедкс для news_datestamp и news_dateorder нинадо?

   
 
 автор: cheops   (04.08.2006 в 14:58)   письмо автору
 
   для: JIEXA   (04.08.2006 в 13:46)
 

А запросы только такие? В этом случае нужно организовать один индекс по трём столбцам news_active, news_open и news_main.

   
 
 автор: JIEXA   (04.08.2006 в 13:46)   письмо автору
 
   для: cheops   (04.08.2006 в 12:29)
 


CREATE TABLE 'news' (
  'news_id' int(9) unsigned NOT NULL auto_increment,
  'news_cat' smallint(5) NOT NULL default '0',
  'news_subject' varchar(80) NOT NULL default '',
  'news_text' longtext NOT NULL,
  'news_breaks' enum('0','1') NOT NULL default '0',
  'news_author' varchar(30) NOT NULL default '',
  'news_datestamp' datetime NOT NULL default '0000-00-00 00:00:00',
  'news_dateorder' datetime NOT NULL default '0000-00-00 00:00:00',
  'news_reads' int(12) unsigned NOT NULL default '0',
  'news_comment' smallint(10) unsigned NOT NULL default '0',
  'news_active' enum('0','1') NOT NULL default '1',
  'news_open' enum('0','1') NOT NULL default '1',
  'news_main' enum('0','1') NOT NULL default '1',
  'news_vote' enum('0','1') NOT NULL default '0',
  PRIMARY KEY  ('news_id'),
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

   
 
 автор: cheops   (04.08.2006 в 12:29)   письмо автору
 
   для: JIEXA   (04.08.2006 в 02:27)
 

Приведите структуру таблицы, если не сложно?

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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