Каквокакво е mysql index и как да ги използвам
Можете ли да дадете ясен пример за индекс на таблици? Документацията казва толкова много, че е подвеждаща. Индексът първичен ключ ли е или външен ключ?
Накратко, индексът е полето, върху което се оптимизира (ускорява) търсенето.
Тъй като индексът заема място, само онези полета, които се избират, трябва да бъдат индексирани.
Да кажем, че имаме маса.
Да приемем, че имате нужда от търсене по име (първо име).
тогава има смисъл да добавите индекс към това поле.
Ще бъде създадена „карта“, която ще улесни намирането на записи в оригиналния списък.
За една малка таблица няма да е очевидно предимството да се съединят няколко (3-4 вече са достатъчни) таблици на неиндексирани полета. Убива сървъра веднага!
Накратко, индексите се създават, за да подобрят производителността при търсене на данни. Таблиците могат да имат огромен брой редове, които се съхраняват в произволен ред. Без индекс търсенето на желаните редове върви по ред (последователно), което отнема много време при големи количества данни.
Индекс - обикновено една или повече колони на таблица и указатели към съответните редове на таблицата, ви позволява да търсите редове, които отговарят на критериите за търсене. Ускоряването на работата с помощта на индекси се постига главно поради факта, че индексът има оптимизирана за търсене структура - например в MySQL b-дърво. По-добре е да използвате индекс върху тези колони на таблицата, на които най-често ще налагате условия чрез where column_name = .
Индексът се създава по правилото:
Например, имате таблица, наречена тест, която съхранява данни за градовете в България с улици като Град, Улица, Къща. Ясно е, че в този сценарий ще има много редове в таблицата. Ако често пробвате определен град,Например:
За да работи тази заявка по-бързо от обикновено, трябва да добавите индекс според горното правило:
След това същата молба
ще работи много по-бързо, ако градската колона е индексирана.
На пръсти може да се обясни така:
Когато създадете таблица, добавите данни към нея, таблицата нараства и изглежда просто като последователен списък, подреден според това как данните са добавени към нея.
Когато има малко данни, списъкът е малък и всички заявки към него се изпълняват почти незабележимо. Но когато броят на записите в таблицата започне да надхвърля един милион (в различни случаи по различни начини, но като пример милион), тогава търсенето ви вече не е толкова бързо, а с добавянето на нови и нови записи - още по-бавно.
Това се дължи на факта, че когато търсите запис, всички записи се преглеждат, докато стигнете до желания.
Когато най-накрая се изморите от това и искате да направите нещо, тогава индексите идват на помощ.
Индексът се създава от някакво специфично поле (евентуално от няколко), по което обикновено се извършва търсенето. Когато създавате индекс, MySql (и всяка друга база данни) преминава през всички записи в таблицата и изгражда дърво (най-вероятно B-дърво или вариант), в което избраното поле действа като ключ, а съдържанието е връзки към записите в таблицата.
И когато направите следващата си заявка за избор на таблицата, на полето, за което е създаден индексът, MySql (и всяка друга база данни) знае, че има индекс, който ще бъде по-бърз за преминаване, отколкото за сортиране през всички записи и вашата заявка ще бъде насочена към този индекс и записите, които отговарят на условието, ще бъдат намерени много по-бързо, тъй като търсенето в изграденото дърво ще бъде много по-бързо от обикновеното изброяване на всички записи.