За последние 24 часа нас посетили 21068 программистов и 1112 роботов. Сейчас ищут 472 программиста ...

Идэксы в базе данных SQL

Тема в разделе "PHP для профи", создана пользователем Evgenij85, 25 сен 2017.

  1. Evgenij85

    Evgenij85 Новичок

    С нами с:
    20 сен 2017
    Сообщения:
    48
    Симпатии:
    0
    Все добрый день, подскажите как правильно построить индексы вернее главное не перестараться с их расстановкой. К примеру есть таблица по которым идет много объединений юзер, тип, город стоит ли проставлять по всем этим полям индексы ?

    CREATE TABLE `crm_bank` (
    `bank_id` INT(11) NOT NULL AUTO_INCREMENT,
    `bank_user_id` INT(11) NOT NULL DEFAULT '0',
    `bank_type` INT(11) NOT NULL DEFAULT '0',
    `bank_paysystem` INT(11) NOT NULL DEFAULT '0',
    `bank_city` INT(11) NOT NULL DEFAULT '0',
    `bank_date` DATETIME NULL DEFAULT NULL,
    `bank_way` TINYINT(1) NOT NULL DEFAULT '0',
    `bank_summ` FLOAT NOT NULL DEFAULT '0',
    `bank_comment` VARCHAR(255) NULL DEFAULT NULL,
    `bank_confirmed` INT(11) NOT NULL DEFAULT '0',
    `bank_order` INT(11) NULL DEFAULT NULL,
    `bank_confirmed_by` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`bank_id`)
    )
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB;
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    1. Берем slow log
    2. Делаем explain analyze
    3. Курим и добавляем индексы до появления приемлемого результата.

    Создание правильных индексов без знания запросов и их количества - гадание на кофейной гуще, ну или неплохой такой скилл )
     
  3. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Должный скилл middle backend прогера, при прокуривании архитектуры.
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Это пока не глянешь на статистику использования индексов и сами запросы. Там и окажется, что планировщик делает запрос с другого конца ))
     
  5. Evgenij85

    Evgenij85 Новичок

    С нами с:
    20 сен 2017
    Сообщения:
    48
    Симпатии:
    0
    вообщем поделюсь как я поступил ,
    проставил индексы на связующие таблицы где как мне показалось больше всего нагрузка с индексами лучше не увлекаться кроме связующих таблиц рекомендовано использовать индексы на полях где часто происходит поиск по where в моем случае у меня и связи по этим полям + есть where, так как у меня таблиц было много эта таблица как пример , после оптимизации сайт скорость сайта увеличилась в 2-3 раза
    `bank_user_id` INT(11) NOT NULL DEFAULT '0',
    `bank_paysystem` INT(11) NOT NULL DEFAULT '0',
    `bank_city` INT(11) NOT NULL DEFAULT '0',
    `bank_order` INT(11) NULL DEFAULT NULL,
     
  6. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Даже на форум можно было не писать, со способностью в самообразование у вас всё ровно.
     
  7. Evgenij85

    Evgenij85 Новичок

    С нами с:
    20 сен 2017
    Сообщения:
    48
    Симпатии:
    0
    судя по ответам научится нечему, так пустые ответы, хотя ждал конкретики
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Evgenij85 нравится это.