SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 24.03.2015 15:05:23

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Как правильно расставить индексы в таблице

доброе время суток.

будьте добры, подскажите как правильно проставить индексы в данной таблице:

CREATE TABLE IF NOT EXISTS `people_1_b_fs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `b_id` int(10) NOT NULL,
  `man_id` int(10) NOT NULL,
  `admin` tinyint(1) NOT NULL,
  `name` varchar(16) NOT NULL,
  `surname` varchar(16) NOT NULL,
  `nickname` varchar(16) NOT NULL,
  `birthdate` int(10) NOT NULL,
  `priv` tinyint(1) NOT NULL,
  `rate` int(8) NOT NULL,
  `vote` int(8) NOT NULL,
  `url` varchar(16) NOT NULL,
  `time` int(10) NOT NULL,
  `dropId` varchar(64) NOT NULL,
  `coutry_id` int(8) NOT NULL,
  `region_id` int(10) NOT NULL,
  `city_id` int(10) NOT NULL,
  `sex` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `b_id` (`b_id`,`man_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

я думаю что по названием колонок приблизительно ясно что за инфа будет в них. в таблице будет находится более 100 миллионов записей. выборка будет производится по таким полям:

`b_id`, `man_id`
`b_id`, `name`, `surname`, `nickname`
`b_id`, `name`, `surname`, `nickname`, `birthdate`
`b_id`, `time`
`b_id`, `coutry_id`, `region_id`, `city_id`
`b_id`, `sex`
`b_id`, `rate`
`b_id`, `name`, `surname`,  `nickname`, `birthdate`,  `rate`,  `coutry_id`, `region_id`,  `city_id`, `sex`, `time`

какие в данном случае лучше всего создать индексы что бы запросы к таблице работали как можно быстрее?

заранее благодарен за помощь!

Неактивен

 

#2 24.03.2015 16:30:17

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как правильно расставить индексы в таблице

Прямо-таки напрашивается индекс на (b_id,name,surname,nickname), конечно.
А у b_id большой разброс значений или маленький?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 24.03.2015 20:45:33

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: Как правильно расставить индексы в таблице

b_id до 10 000, возможно 15 000, максимум 20 000

Неактивен

 

#4 24.03.2015 23:46:22

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

Re: Как правильно расставить индексы в таблице

Чтобы создавать индексы без знания запросов, которые будут их использовать, нужно иметь продвинутый хрустальный шар. У меня такого нет smile

По сути вашего вопроса, рекомендую посмотреть "Шварц Б., Зайцев П., Ткаченко В. MySQL. Оптимизация производительности" в третьей главе есть хороший материал про стратегии индексирования.

Неактивен

 

Board footer

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