За последние 24 часа нас посетили 20198 программистов и 1693 робота. Сейчас ищут 1824 программиста ...

Помогите понять индексы

Тема в разделе "MySQL", создана пользователем Intrerio, 6 окт 2017.

  1. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Здравствуйте дорогие друзья. Увлекся оптимизацией запросов и увидил что реально система летит.Поэтому все глубже ухожу в данную сторону.Помоги понять следующую таблицу:
    [​IMG]
    Я просто не могу понять почему дублируються вот например product,product_2, product_3 .Это несколько раз присваивался индекс или есть другая причина?
     
  2. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Пришел к ответу сам. Это по несколько раз добавлялся индекс
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты наебенил на каждое поле по индексу, а то и по парочке? :D
    при вставке или апдейте обновляются все индексы, что долго.
    ты смотри, заоптимизируешь сервак до смерти.
     
    MouseZver нравится это.
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    https://habrahabr.ru/company/postgrespro/blog/326096/

    правда там о postgres и некоторые вещи специфичны, но в целом понимание даст.

    Индекс на каждое поле - это лютый капец, на столько, что лучше вообще без них. Вообще, нет смысла гадать на индексах заранее. Потому что долгий запрос - не всегда проблема, к примеру он выполняется раз в пятилетку, толку с него... В то же время могут быть запросы, выполняющиеся очень часто в тех или иных вариациях и специфичный именно для них индекс может резко снизить нагрузку на сервак. А ещё, планировщик запроса может пойти только ему одному понятным способом, начисто игнорируя ваши индексы, просто потому что так всё равно быстрее ) А значит надо делать explain и смотреть, какие реально связи он использует для выборки и в каком порядке. Потому что индекс на самую нижнюю итерацию даст 90% возможного ускорения, а на верхнюю не даст ничего.

    А ещё надо курить сами запросы, к примеру, на большой-большой таблице людей вы ищете тех, кто знает PHP, может быть у вас есть поле "увлекается программированием", добавив на него индекс и условие к запросу вы резко апните его скорость, за счет уменьшение размера изначальной выборки.

    Короче, магии тут нет никакой, в результате получаются всё те же циклы и условия. Важно понимать какие и что каждый индекс не только ускоряет запрос, но и увеличивает нагрузку на поддержание своей актуальности.
     
    [vs] нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    status_peredachi
    status_perevirka
    status_perdiachiy