SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 21.02.2013 17:57:38

Вася
Участник
Зарегистрирован: 21.02.2013
Сообщений: 6

Сколько нужно индексов в данном случае

Привет.

Возник вопрос по использованию дополнительных индексов.

У меня есть таблицы: Фирмы, Форматы и Фирмы_Форматы (пишу на русском чтоб ничего не перепутать). Связь таблиц многие ко многим (HABTM).
И есть связь Фирмы belongsTo таблица с городами.
В таблице фирм поля:
id (ключ),
city_id,
active, (поле показывает активен ли показ фирмы на сайте или нет)
все остальные поля с информацией.

В таблице Форматы:
id (ключ),
format (название формата)

В таблице Фирмы_Форматы:
id (ключ),
firm_id,
format_id

Соответственно это выглядит так:
id    firm_id    format_id
  1        200       3
  2        200       12
  3        415       3
Ну и т.д.

В таблице городов:
id (ключ),
название города

Вопрос: статистика в phpmyadmin сообщает что мол мало используется индексов. Я делаю много выборок с самыми разными условиями + часто ставлю условие чтоб active был равен 1.
Например все фирмы из одного города, все фирмы из одного города + один или несколько форматов и т.д. в самых разных комбинациях.

Какие мне следует добавить индексы и на какие поля? А то я уже запутался, вроде есть и простые и комбинированные и т.д.

Отредактированно Вася (21.02.2013 17:58:35)

Неактивен

 

#2 21.02.2013 18:25:56

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

Re: Сколько нужно индексов в данном случае

посмотрите FAQ №5

Неактивен

 

#3 21.02.2013 18:53:00

Вася
Участник
Зарегистрирован: 21.02.2013
Сообщений: 6

Re: Сколько нужно индексов в данном случае

Честное слово, прочёл. Но не понял все делать их индексами или нет, и нужно ли делать индексом поле active. Можете в моём примере подсказать? Я дам самые частые запросы если надо.

Неактивен

 

#4 21.02.2013 19:52:22

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

Re: Сколько нужно индексов в данном случае

На active не нужно, т.к. он имеет низкую кардиналити (принимает только да значения 0 и 1).

На все не нужно. Честно говоря, добавить к той методике, что описана по ссылке нечего:
http://sqlinfo.ru/forum/viewtopic.php?pid=26006#p26006  и далее

Неактивен

 

#5 21.02.2013 20:45:42

Вася
Участник
Зарегистрирован: 21.02.2013
Сообщений: 6

Re: Сколько нужно индексов в данном случае

Спасибо за ответы. В общем я ещё раз всё прочитал, появилось некоторое (небольшое) понимание.
Я правильно понял что если я сделаю некоторые лишние индексы, то я потеряю только в объёме который занимает база? А так всё равно производительность будет лучше чем если совсем без индексов?

Отредактированно Вася (21.02.2013 20:46:28)

Неактивен

 

#6 21.02.2013 20:58:29

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

Re: Сколько нужно индексов в данном случае

Лишние индексы, кроме того, замедлят операции добавления/изменения данных.

Неактивен

 

#7 21.02.2013 21:10:59

Вася
Участник
Зарегистрирован: 21.02.2013
Сообщений: 6

Re: Сколько нужно индексов в данном случае

В моём случае добавляют/изменяют данные раз в несколько дней. Так что мне главное чтоб как можно быстрее и легче для сервера работало на вывод.

Неактивен

 

Board footer

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