ПредишенСледващото

Индекси на първата стъпка по пътя към скоростта, за хоста

Бази данни - специализирано хранилище на информация, както и работа с тях, ние сме по отношение на набори от данни и операции по тези данни, знаят за факта, че действителното оборудване се крие зад тях. Създаване на SQL-заявка, ние имаме предвид, че всички действия се извършват по отношение на таблиците в същото време, тъй като понятието за време в екипите не е SQL език. Когато нашата база данни е малък, че може да не забележите, че сървърът на базата данни се нуждае от време, за да обработи каза контакт на масата, за да намерите най-необходимите струни, извличане на съответните записи. Но с разрастването на информация, съхранявана в базата данни, този проблем става все по-видима, и в един момент става ясно, че е необходимо да се вземат специални мерки. Ние започваме да се увеличи производителността на нашия сървър, поставяйки все повече и по-бързо оборудване или да се опитва да коригира съществуващите, за да изтръгне максималната скорост, с една единствена цел - да се ускори изпълнението на заявки към нашата база данни.

Но преди да се разгледа въпроса за "физически" нивото, необходимо е да се определи дали да използвате някои възможности, предлагани от сървъра на базата данни не могат. Много често причината за бавното заявката е, че таблиците не са индексирани. Като правило, ако на масата още няма индекси, в повечето случаи едва ли ще се подобри значително производителността на базата данни и по други начини.

Ако използвате сървър индекс база данни много по-бързо извличане на данни

Помислете как индекса на маса може да се ускори обработката на заявки. Таблицата, която няма записи в индекса, се съхраняват по случаен начин, а когато се опитва да изтегли сървъра на информационна база данни ще сканира всички записи, за да се установи съвпадение с условия. Като пример, да вземе сървъра на MySQL база данни. който съхранява информация за стоките. Да предположим, че ние трябва да получите всички редовете на стоките, произведени в дадена страна, а ако тази операция се извършва често, вместо повтаряне през всички линии, които можем индекс на масата с бройки стоки на терена, съдържащ броя на country_id на страната. Създаден индекс ще съдържа запис на всеки ред в таблицата, а записите й ще бъдат сортирани по country_id област. Сега, когато исканията сървъра на базата данни могат да научат това, което записи ще бъдат необходими от индекса, а ако имаме нужда от една страна с номера 5, не е било постигнато в индекса до номер 6, сървърът на базата данни може да спрете да търсите - защото линиите с номера 5 в индекса е ясно още няма.

По същия начин, всеки сървър на база данни, има алгоритми, за да намерите бързо редове в средата на списъка с индекс, който ви позволява да оптимизирате търсенето на необходимите струни. Горният пример не обяснява ползите от създаването на индекс, например, за да сортирате таблицата от тази област, и да го съхранява в тази форма. Да, това решение може да се прилага, ако са направени всички искания за търсене на тази област, но може да се наложи сортиране, и други области, за да можем да създадете таблица няколко показатели за най-популярните заявки - например, за количеството на стоките, неговата цена и други параметри.

Когато се вземат проби на данни от множество таблици кодовете са още по-ефективно

При използване на индексите трябва да са запознати с техните недостатъци

В допълнение към условията на заявка за оптимизация, където индексите могат да бъдат полезни в други случаи. Очевидно е, че сортирането на избраните данни също ще бъде по-бързо индексиране в тази област. Тя също така ще бъде по-бързо отчитане на данните на обобщаващи функции MIN на () и MAX () за получаване на максимални и минимални стойности в ред групировки. В някои случаи, ако искате да извлечете информация, която може да осигури самия индекс, позовавайки се на таблица на база данни не са изпълнени най-малко. Възможно е да има погрешно схващане, че трябва да се индексират всяка област в таблицата - няма да бъде по-лошо. Това не е съвсем вярно - индекси, въпреки своите очевидни ползи, има някои недостатъци. Най-очевиден проблем е, че досието на всеки от индекса ще отнеме известно дисково пространство, както и поради необходимостта от индексите на най-подходящите за големи таблици, допълнителните файлове индекса ще растат с него.

Вторият проблем се крие във факта, че индексите като информацията за избор на скоростта и забавят работата на добавяне, редактиране и изтриване на записи - всъщност в този случай е необходимо да се направят промени във всички индекси на променливата на маса. Налице е също така все още няколко насоки, които могат да повишат ефективността на индекса, като същевременно минимизират техните слабости. Една от препоръките вече беше споменато: да индексира следните области, които са търсили, и не могат да бъдат избирани, че е добър кандидат за индексиране би било областта, посочена в WHERE състояние. Също така, имайте предвид, че това е много по-ефективен индекси се използват за полета с уникални стойности. Ако полето съдържа много от същите стойности, индексът не може да докаже себе си и. При създаването на индекси особено за полета дълго характер, е необходимо да се анализира - възможно ли е да се гарантира, че ключът не е единствена в цялата област, а първите 10-20 знака на това поле, което значително спестява размера на индексен файл и да се гарантира ускоряване на изпълнението на заявките. Такова ограничение за полета характер се препоръчва, и текст и BLOB тип е задължително за полетата.

Много често, ако не се създаде индекс за едно поле, и в продължение на няколко области, е възможно да го използвате, за да проби в други случаи. В този случай, на върховенството на "крайно леви". Да кажем, за таблицата с продукта, ние сме създали индекс на полета страни, категория, количество - например, да подреди масата в този ред. Това можем да използваме един и същи код в случаите, когато имаме нужда от индекс, да търсите в полето за страна, и, ако е необходимо, за индекса за едновременното сортирането на полетата и категорията страна. Ето защо, ако вие създавате индекси за повече полета, добавяне на нов индекс би било хубаво да се види дали не дублира съществуващите.

Създаване на индекси, колкото е необходимо

Създаване на индекс за маса може да бъде както в момента на създаването му, а след това добавете следния просто правило - това е необходимо да се създадат индекси, както е необходимо. Когато създавате поле таблица, която предоставя уникална, трябва да се декларира с ключови области първичен ключ или уникален, той автоматично ще се създаде индекс за това поле. Тези полета не могат да съдържат дублиращи се стойности или равна на NULL, и по тази причина се обработват много бързо. По същия начин, можете да посочите ключовата дума при създаването на една маса

INDEX index_name spisok_poley.

където всички параметри след индекса на дума по избор. Но тази възможност се използва рядко - по-често е необходимо да се добавят индекс към съществуваща таблица. Можете да използвате отчета ALTER TABLE, който се използва за промяна на съществуващи таблици:

ALTER ТАБЛИЦА table_name INDEX index_name spisok_poley;

Индексът е създаден на колоните, посочени в spiske_poley. Ако index_name не е уточнено, то се създава автоматично след първата индексирана терена. За характер полета може да намали продължителността на индексираните ценности, като посочва броя на знаците N да се индексират в imeni_polya (н) По този начин, ние можем за нашата маса, за да създадете индекс:

ALTER TABLE елементи INDEX country_id;

Ако вече не е необходимо в индекса, той може лесно да бъде отстранен с указ от името на индекс:

Промяна на таблица елементи спад INDEX country_id;

Има и синоними на тези екипи с по-ясен синтаксис:

CREATE INDEX index_name ON таблица_име spisok_poley;
DROP INDEX index_name ON таблица_име;

Сродни връзки

Свързани статии

Подкрепете проекта - споделете линка, благодаря!