[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Индексы MySQL
andrey888
Что надежнее и оптимальнее использовать ? ..
Многоколоночные Индексы или Комбинированные ?
В моем конкретном случае после WHERE идет множество перечеслений с AND ...
Судя по статье на Хабре преимущество дают комбинированные индексы , опять же на моем примере это таблица с 17 колонками , как тогда лучше сделать ? ОдИН длинный комбинированный индекс
(BLA1,BLA2,BLA3,BLA4,BLA5,BLA6 ...и т.д. до 17)
или несколько небольших но тоже комбинированных запросов
(BLA1,BLA2,BLA3) , (BLA4,BLA5,BLA6) и т.д.
Раньше при проектировании и добавлении Индексов не парился и ставил индекс у тех полей которые нужны (по одному) .. а вот сейчас призадумался, может Комбинированные действительно лучше ...?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
inpost
andrey888
Не понял... поиск будет идти по одному индексу. Лучше 1 индекс по нескольким колонкам.

И второе, уверен, что у тебя 17 колонок и по всем нужен поиск? Может неверная структура? А ещё может быть так, что BLA1 не выбран, поэтому поиск по остальным полям кроме него и уже составной индекс не будет в данном случае работать

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
andrey888
inpost а составной индекс это и есть комбинированный ? ..
Ты прав , поиск осуществляется по всем колонкам, запрос собирается на пхп в строку поиска исходя из того что выбрали..

Правильно ли я тебя понял ?
Если у меня будет стоят комбинированный Индекс (BLA1,BLA2,BLA3) а в запросе будет только два поля BLA2 = 2 AND BLA3 = 82 то этот комбинированный Индекс не сработает и в таком случае мне лучше сделать на каждое поле свой Индекс..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
Лучше, лучше...ЛУЧШЕ сделать в зависимости от преобладающих запросов, ставить индексы в самых выгодных местах. Чисто на индексах "выехать" в многокритерийных запросах не получится. В большинстве случаев конечно наиболее приемлемый вариант небольшие композитные индексы. Куда их ставить и в каком порядке виднее вам.
Сначала проанализируйте через EXPLAIN какие запросы, какие результаты дают и исходя из этого уже принимайте решение.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
inpost
andrey888
Если ты сделаешь на 2 поля 2 индекса, то в итоге будет работать лишь 1 индекс, то есть поиск по ABC2 по индексу, а ABC3 - уже без. А значит запрос будет медленнее. Верно - подбирать нужную комбинацию под свою задачу. Комбинированный, как ты называешь, я же говорю составной - это 1 индекс на несколько полей, тогда эти несколько полей работают и ищутся быстро.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
andrey888
T1grOK проблема в том что данная таблица сейчас на стадии проектирования ... я не могу включить свои эсктросенсорные способности и узнать какие поля будут использоваться в поиске чаще .. могу тольок предполагать , но это как на кофейной гуще. Поэтому мне интересно как базово сделать лучше ..
inpost я совсем запутался в своих выводах и твоих на них ответах biggrin.gif ..
Я понимаю что если поиск будет идти по двум полям и у каждого свой индекс то индекс второго поля использоваться не будет.. а вот если сделать составной из этих двух полей то будет использоваться и тот и тот ..

Все таки лучше использовать Комбинированные = Составные Индексы , группируя их по 3-4 поля в каждом индексе .. видимо так..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
Цитата (andrey888 @ 16.04.2014 - 12:44)
проблема в том что данная таблица сейчас на стадии проектирования ... я не могу включить свои эсктросенсорные способности и узнать какие поля будут использоваться в поиске чаще .. могу тольок предполагать , но это как на кофейной гуще. Поэтому мне интересно как базово сделать лучше ..

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

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
T1grOK говорю тебе с 99% увереностью что все 17 полей будут учавствать в поиске .. но степень участия я пока знать не могу .. поэтому пытаюсь найти оптимальный вариант .

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
Без данных, а также без запросов и их анализа это ткнуть пальцем в небо(повторюсь, исключение очевидные места), можно кинуть кости и поставить по результатам индексы biggrin.gif

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
Согласен, но наверное когда мы проектируем а не отптимизируем - мы все в какой то степени тыкает в небо пальцем .. че поделать .. не идти ж к гадалке или на битву экстрасенсов )

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
Это совершенно разные вещи. Проектирование опирается на концепции и свойства будущей системы. Оптимизация БД на данные и запросы, поэтому данный процесс выполняется одним из последних во всем цикле разработки.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
Вот и я про это .. Абсолютно разные вещи .

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.