За последние 24 часа нас посетили 22545 программистов и 1017 роботов. Сейчас ищут 758 программистов ...

Индексация полей

Тема в разделе "MySQL", создана пользователем pr0n1x, 31 май 2019.

  1. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Всем привет, давно мучает вопрос, но не могу найти конкретный ответ на него.

    Допустим есть интернет магазин, есть таблица с товарами, в таблице есть много полей, 2 поля это конкретно цена товара, пусть будет INT и дата создания товара, пусть будет DATETIME.

    Таблица скажем на 100,000 товаров.

    На самом сайте есть форма поиска, где человек может указать цену от и до и отсортировать по новым товарам.

    При поиске будут задействованы 2 поля, которые указал выше.

    Вопрос в том, что если ли смысл индексировать эти поля?

    Ведь поле дата создания товара, всегда будет иметь уникальные значения (практически невозможно создать 2 товара в одно и тоже время), если создать по нему индекс, то в индекс попадут все равно все значения из таблицы и при поиске по индексу базе все равно прийдется перебрать все записи.

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

    Так стоит индексировать такие поля?
     
  2. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @pr0n1x, у вас несколько извращённое понимание индексов, цена должна быть проиндексирована однозначно, по поводу даты добавления если на склад, то индекс по любому, если просто дата добавления на сайт, то смотря что за выборка будет по этому полю.
     
  3. pr0n1x

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

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    как понимать извращенное понимание индексов?
    как база ищет по индексу можете объяснить на примере цены?
     
  4. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Делает запрос к индексу, если найдет нужное, то это хорошо все быстренько выполнится.
    Если не найдет, делает общий запрос и будет два запроса что медленней соответственно.
     
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328