SSMS
 sql >> база данни >  >> Database Tools >> SSMS

Възможни стъпки за подобряване на производителността на заявките на SQL Server

Първо Run query от Sql Server Management Studio и погледнете плана на заявката, за да видите къде е гърлото на бутилката. На всяко място, където видите „сканиране на таблица“ или „сканиране на индекс“, то трябва да премине през всички данни, за да намери това, което търси. Ако създадете подходящи индекси, които могат да се използват за тези операции, това би трябвало да увеличи производителността.

По-долу са изброени някои съвети за подобряване на производителността на sql заявката..

Избягвайте множество обединявания в една заявка

Опитайте се да избегнете писането на SQL заявка с помощта на множество обединявания, които включват външни обединения, кръстосано прилагане, външно приложение и други сложни подзаявки. Това намалява възможностите за избор на оптимизатора да реши реда на присъединяване и типа на присъединяване. Понякога Оптимизаторът е принуден да използва свързвания с вложен цикъл, независимо от последиците за производителността за заявки с прекалено сложно кръстосано прилагане или подзаявки.

Елиминирайте курсорите от заявката Опитайте се да премахнете курсорите от заявката и използвайте заявка, базирана на набор; базираната на набор заявка е по-ефективна от базираната на курсора. Ако има нужда от използване на курсор, избягвайте динамичните курсори, тъй като това има тенденция да ограничи избора на планове, налични за оптимизатора на заявки. Например динамичният курсор ограничава оптимизатора до използване на вложени връзки на цикъл.

Избягвайте използването на некорелирана скаларна подзаявка Можете да пренапишете заявката си, за да премахнете некорелирана скаларна подзаявка като отделна заявка вместо част от основната заявка и да съхраните изхода в променлива, която може да бъде посочена в основната заявка или по-късна част от пакета. Това ще даде по-добри опции на Оптимизатора, което може да помогне за връщането на точни оценки за кардиналите заедно с по-добър план.

Избягвайте функциите с стойност на таблица с множество изрази (TVF) TVF с множество оператори са по-скъпи от вградените TFV. SQL Server разширява вградените TFV в основната заявка, както разширява изгледите, но оценява TVF с множество оператори в отделен контекст от основната заявка и материализира резултатите от множество оператори във временни работни таблици. Отделният контекст и работната таблица правят TVF с много изявления скъпи.

Създайте силно селективен индекс Селективността определя процента на квалифициращите редове в таблицата (квалифициращ брой редове/общ брой редове). Ако съотношението на квалифициращия брой редове към общия брой редове е ниско, индексът е силно селективен и е най-полезен. Неклъстерираният индекс е най-полезен, ако съотношението е около 5% или по-малко, което означава, че индексът може да елиминира 95% от редовете от разглеждане. Ако индексът връща повече от 5% от редовете в таблица, вероятно няма да се използва; или ще бъде избран или създаден различен индекс, или таблицата ще бъде сканирана.

Позициониране на колона в индекс Редът или позицията на колона в индекс също играе важна роля за подобряване на производителността на SQL заявката. Индексът може да помогне за подобряване на производителността на SQL заявката, ако критериите на заявката съвпадат с колоните, които са останали най-много в ключа на индекса. Като най-добра практика повечето селективни колони трябва да се поставят най-ляво в ключа на неклъстериран индекс.

Изтриване на неизползваните индекси. Изтриването на неизползваните индекси може да помогне за ускоряване на модификациите на данните, без да засяга извличането на данни. Освен това трябва да дефинирате стратегия за пакетни процеси, които се изпълняват рядко и използват определени индекси. В такива случаи създаването на индекси преди пакетните процеси и след това отпадането им, когато пакетните процеси приключат, помага да се намалят излишните разходи за базата данни.

Създаване и актуализации на статистика Трябва да се погрижите за създаването на статистически данни и редовните актуализации за изчислените колони и няколко колони, посочени в заявката; оптимизаторът на заявки използва информация за разпределението на стойностите в една или повече колони на статистиката на таблица, за да оцени мощността или броя на редовете в резултата от заявката. Тези оценки за мощността позволяват на оптимизатора на заявки да създаде висококачествен план за заявки.

Прегледайте отново дефинициите на вашата схема Не на последно място, прегледайте отново дефинициите на вашата схема; внимавайте дали подходящи ограничения FORIGEN KEY, NOT NULL и CEHCK са на място или не. Наличието на правилното ограничение на правилното място винаги помага за подобряване на производителността на заявката, като ограничението FORIGEN KEY помага за опростяване на присъединяванията чрез преобразуване на някои външни или полуобединения във вътрешни съединения, а ограничението CHECK също помага малко чрез премахване на ненужни или излишни предикати.

Справка




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Как да извлечете база данни MSSQLServer като .dacpac без VerifyExtraction?

  2. SQL Server 2008 - Прикачване на mdf без журнал - Грешка в операционната система 5:5 (Достъпът е отказан.)

  3. Открит е неочакван EOF във файла с данни на BCP

  4. Загубен IntelliSense в SQL Server Management Studio

  5. SSMS 18.8 се срива при повторно свързване на раздели