Няколко думи за съставните индекси в MySQL - aleksandr - en

Тази публикация е много кратък извлечение от оригиналната статия, която беше полезна само за мен.

mysql

Композитно индексно устройство

Примерна таблица:

стойностите на съставния индекс ще бъдат:

Редът на колоните в индекса играе голяма роля. Обикновено колоните, които се използват в клаузите 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.

Това е краят на това изстискване, разказах най-полезното от моята камбанария, за по-подробна информация, заповядайте в оригиналната статия.