|
С течение на времето всеки програмист стига до ситуации, при които дадени заявки към базата за данни са доста сложни и трудоемки, при което се забавя функционалноста на апликацията или се достига момет на тотален краш. За да не се получават такива нежелани ефекти е добре всяка една заявка да бъде много добре анализирана и обмислена. Методите за това са различни, но всяко нещо се свежда до едно: възможно най-бързо изпълнение на заявлката и извеждане на точен резултат.
Какво е индекс и как да го използваме Индексът на една таблица може да сравним с индекса на една книга. По същия начин, както вие използвате индекса на дадена книга или учебник, за да намерите къде точно се среща дадена дума или словосъчетание, по подобен начин MySQL използва своя индекс, за да намери възможно най-бързо резултата от зададената заявка. Ако приемем, че имаме таблица с 1 милион реда, в която сме запаметили името и презимето на нашите потребители, и ако създадем заявката: CODE
то тогава при липса на индекс върху полето Prezime, MySQL ще трябва да премине всеки един ред от всичките 1 милион реда за да сравни резултата с нашата заявка и в крайна сметка да изведе даден резултат. Този процесс ще бъде много дълготраен и изискващ много ресурси. Но след като поставите индекса върху полето Prezime, то тогава MySQL ще има възможност да отстрани моментално резултатите, който не съвпадат с нашата заявка и по този начин ще върне исканият от нас резултат възможно най-бързо и без много ресурси! За да създадем индекса правим следното: CODE
1. Частични индекси Индексите ускоряват заявките за сметка на дисково пространство. В случай, че индексът ви е много голям (от рода на GB-тове), то тогава има възможност той да бъде отстранен от паметта на MySQL сървъра и в такъв случай вие нямате никаква изгода. За да не се получава това можем - дори е желатено да създадем един частичен индекс: CODE
Това означава, че вместо да индексираме цялото презиме, то ние се ограничаваме в първите 4 байта от него. Недостатъкът при това индексиране е, че при създаване на заявка като : CODE
то MySQL няма да може да елиминира толкова много редове, както при първия пример, а ще трябва да разглежда и редове като: Ivanov, Ivanovi, Ivanovski, но от страна на спестено дисково пространсто постигаме много. Между другото има много случай, при които този тип индексиране е много удобен. Не трябва да го подценявате! 2. Индекс върху няколко полета Този тип индекс се използва, ако често запитвате базата за данни чрез няколко полета. Например: CODE
В такъв случай, ако имате единствено индекс върху Prezime, то той няма да ви е от толкова голяма полза, защото във заявката търсите и Ime='Ivan'. За да ускорите до максимум заявката, то трябва да създадете следния индекс: CODE
Тук проблемът, е че тъй като и двете полета са от тип VARCHAR индексът ви ще е много голям, затова е хубаво да използвате частичен индекс: CODE
Важно е да знаете, че ако създавате излишни индекси, то вие няма да подобрите вашата апликация, а само ще влошите процеса на работа. Много е важно да знаете, че ако върху едно поле е зададен UNIQUE или PRIMARY ключ, то за това поле е създаден вече индекс, който може да използвате. Ако върху две или повече от полетата на една таблица са задени UNIQUE или PRIMARY ключове, то тогава единствено за първото поле съществува индекс. Това е много важно, в противен случай ще създавате излишни индекси и ще губите ценно дисково пространство!
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









