Няколко думи за съставните индекси в MySQL - aleksandr - en
Тази публикация е много кратък извлечение от оригиналната статия, която беше полезна само за мен.
Композитно индексно устройство
Примерна таблица:
стойностите на съставния индекс ще бъдат:
Редът на колоните в индекса играе голяма роля. Обикновено колоните, които се използват в клаузите WHERE, трябва да се поставят в началото на индекса. Колони от ORDER BY - до края.
Нека си представим, че нашата заявка ще използва търсене в диапазон:
ИЗБЕРЕТЕ * ОТ потребители WHERE възраст
Тогава MySQL няма да може да използва пълния индекс, т.к Стойноститеgender ще бъдат различни за различните стойности на колонатаage. В този случай базата данни ще се опита да използва индексната част (само възраст), за да изпълни тази заявка, като първо ще филтрира всички данни, които отговарят на условиетовъзраст ИЗБЕРЕТЕ * ОТ потребители WHERE възраст = 29 И пол = 'мъжки'
За такава заявка трябва да създадете съставен индекс. Има две опции:age_gender илиgender_age. И двете ще паснат. Но те ще работят с различна ефективност.
За да разберете това, помислете за уникалността на стойностите на всяка колона и броя на съответните записи в таблицата:
Тази информация ни казва следното: Всяка стойност на колонатаage обикновено съдържа около 200 записа. Всяка стойност на колонатаgender е около 6000 записа.
Ако колонатаage е първа в индекса, тогава MySQL след първата част на индекса ще намали броя на записите до 200. Остава да се направи селекция върху тях. Ако колонатаgender е първа, тогава броят на записите ще бъде намален до 6000 след първата част на индекса. Тези. порядък по-голям, отколкото в случай на възраст.
Това означава,че индексътage_gender ще се представи по-добре отgender_age.
Това е краят на това изстискване, разказах най-полезното от моята камбанария, за по-подробна информация, заповядайте в оригиналната статия.