andrey888
16.04.2014 - 15:32
Что надежнее и оптимальнее использовать ? ..
Многоколоночные Индексы или Комбинированные ?
В моем конкретном случае после WHERE идет множество перечеслений с AND ...
Судя по статье на Хабре преимущество дают комбинированные индексы , опять же на моем примере это таблица с 17 колонками , как тогда лучше сделать ? ОдИН длинный комбинированный индекс
(BLA1,BLA2,BLA3,BLA4,BLA5,BLA6 ...и т.д. до 17)
или несколько небольших но тоже комбинированных запросов
(BLA1,BLA2,BLA3) , (BLA4,BLA5,BLA6) и т.д.
Раньше при проектировании и добавлении Индексов не парился и ставил индекс у тех полей которые нужны (по одному) .. а вот сейчас призадумался, может Комбинированные действительно лучше ...?
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
inpost
16.04.2014 - 16:14
andrey888Не понял... поиск будет идти по одному индексу. Лучше 1 индекс по нескольким колонкам.
И второе, уверен, что у тебя 17 колонок и по всем нужен поиск? Может неверная структура? А ещё может быть так, что BLA1 не выбран, поэтому поиск по остальным полям кроме него и уже составной индекс не будет в данном случае работать
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
andrey888
16.04.2014 - 16:24
inpost а составной индекс это и есть комбинированный ? ..
Ты прав , поиск осуществляется по всем колонкам, запрос собирается на пхп в строку поиска исходя из того что выбрали..
Правильно ли я тебя понял ?
Если у меня будет стоят комбинированный Индекс (BLA1,BLA2,BLA3) а в запросе будет только два поля BLA2 = 2 AND BLA3 = 82 то этот комбинированный Индекс не сработает и в таком случае мне лучше сделать на каждое поле свой Индекс..
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
16.04.2014 - 16:31
Лучше, лучше...ЛУЧШЕ сделать в зависимости от преобладающих запросов, ставить индексы в самых выгодных местах. Чисто на индексах "выехать" в многокритерийных запросах не получится. В большинстве случаев конечно наиболее приемлемый вариант небольшие композитные индексы. Куда их ставить и в каком порядке виднее вам.
Сначала проанализируйте через EXPLAIN какие запросы, какие результаты дают и исходя из этого уже принимайте решение.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
inpost
16.04.2014 - 16:36
andrey888Если ты сделаешь на 2 поля 2 индекса, то в итоге будет работать лишь 1 индекс, то есть поиск по ABC2 по индексу, а ABC3 - уже без. А значит запрос будет медленнее. Верно - подбирать нужную комбинацию под свою задачу. Комбинированный, как ты называешь, я же говорю составной - это 1 индекс на несколько полей, тогда эти несколько полей работают и ищутся быстро.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
andrey888
16.04.2014 - 16:44
T1grOK проблема в том что данная таблица сейчас на стадии проектирования ... я не могу включить свои эсктросенсорные способности и узнать какие поля будут использоваться в поиске чаще .. могу тольок предполагать , но это как на кофейной гуще. Поэтому мне интересно как базово сделать лучше ..
inpost я совсем запутался в своих выводах и твоих на них ответах

..
Я понимаю что если поиск будет идти по двум полям и у каждого свой индекс то индекс второго поля использоваться не будет.. а вот если сделать составной из этих двух полей то будет использоваться и тот и тот ..
Все таки лучше использовать Комбинированные = Составные Индексы , группируя их по 3-4 поля в каждом индексе .. видимо так..
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
16.04.2014 - 16:51
Цитата (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
16.04.2014 - 16:53
T1grOK говорю тебе с 99% увереностью что все 17 полей будут учавствать в поиске .. но степень участия я пока знать не могу .. поэтому пытаюсь найти оптимальный вариант .
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
16.04.2014 - 16:58
Без данных, а также без запросов и их анализа это ткнуть пальцем в небо(повторюсь, исключение очевидные места), можно кинуть кости и поставить по результатам индексы
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
16.04.2014 - 17:03
Согласен, но наверное когда мы проектируем а не отптимизируем - мы все в какой то степени тыкает в небо пальцем .. че поделать .. не идти ж к гадалке или на битву экстрасенсов )
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
T1grOK
16.04.2014 - 17:12
Это совершенно разные вещи. Проектирование опирается на концепции и свойства будущей системы. Оптимизация БД на данные и запросы, поэтому данный процесс выполняется одним из последних во всем цикле разработки.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
16.04.2014 - 18:13
Вот и я про это .. Абсолютно разные вещи .
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.