Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Съвети за намаляване на сложността на вашия SQL сървър

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

Когато заявките надхвърлят стандартните ви команди SELECT и WHERE, може дори да откриете, че производителността на SQL Server започва да страда, защото оптимизаторите на заявки имат проблеми с обработката на дълги, сложни заявки.

Ако забележите, че вашите SQL заявки използват прекомерен брой сложни присъединявания и подзаявки, вмъкват заявки в клаузи WHERE и разчитат на много AND и OR клаузи, вероятно е подходящ момент да отстъпите назад и да потърсите начини за минимизирайте част от сложността.

Съвети за минимизиране на сложността на заявките на SQL Server

Както споменахме по-горе, оптимизаторите на заявки на SQL Server не обичат сложните SQL заявки. Ето пет начина да направите заявките си по-малко сложни, за да могат да бъдат оптимизирани за подобрена производителност.

1. Премахнете клаузите ИЛИ, когато е възможно

Най-лесният начин да направите заявките по-малко сложни е чрез елиминиране на клаузите ИЛИ, когато е възможно. Тъй като ИЛИ е включващо, SQL Server трябва да обработва всеки компонент на клаузата поотделно, което наистина забавя операциите.

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

2. Прецизно търсене на низове

SQL Server прави много неща добре, но търсенето на размити низове не е едно от тях. Търсенето на низове със заместващи знаци, особено в големи таблици, е неефективно и лошо за производителността.

Има няколко настройки, които можете да приложите към търсенията на низове, които помагат да се сведе до минимум въздействието върху производителността.

  • Използвайте търсене на водещ низ вместо търсене с заместващ знак (т.е. променете „%For%“ на „For%“)
  • Приложете филтри като дата или час към заявката, за да намалите размера на данните, преди да стартирате търсенето на низове
  • Прилагане на индексиране на пълен текст, за да генерирате индекси, които позволяват гъвкаво търсене на низове в текстови колони

3. Внимавайте за големи операции за запис

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

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

4. Изчистване на индекси

Индексите са едни от основните виновници, когато става въпрос за лоша производителност, но когато се опитвате да оптимизирате сложни SQL заявки, индексите изискват някои специални съображения.

SQL Server има няколко инструмента, които ви уведомяват, когато липсващи индекси влияят върху производителността на заявката. Но преди да скочите и да започнете да добавяте индекси, трябва да определите дали допълнителният индекс ще подобри заявката достатъчно, за да си струва усилията. Например, ако заявката се изпълнява 1 милион пъти на ден и индексът я подобрява с 25 процента, тогава вероятно си струва. Ако заявката се използва рядко, може да няма смисъл.

Няколко други неща, които трябва да имате предвид, преди да започнете да добавяте индекси, са дали съществуващите индекси могат да бъдат настроени, за да покрият този случай на употреба, без да се добавя нов и дали този индекс вече съществува, но оптимизаторът го игнорира по някаква причина.

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

5. Продължете отброяването на таблицата

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

Ако забележите, че сложна заявка се представя лошо и има много таблици, това може да е един от онези моменти, когато разделянето на заявката на по-малки заявки е най-добрият избор, защото ще облекчи част от тежестта на оптимизатора.

Инструментите за настройка на производителността могат да помогнат за минимизиране на сложността на SQL сървър

Когато сложни заявки блокират оптимизатора на заявки, често се оказвате с неефективен план за изпълнение и производителността страда. В допълнение към горните съвети, инструментите за настройка на производителността са ценен ресурс за минимизиране на сложността на заявките на SQL Server и оптимизиране на производителността.

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

Анализ на плана за изпълнение на SQL сървър

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

Визуализация на плана за изпълнение на SQL сървър

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

Автоматизирана SQL оптимизация

Инструментът за настройка трябва да анализира вашия SQL, след което автоматично да го пренапише, докато достигне максимално подобрение на времето за изпълнение.

Сравнение на оптимизирани и оригинални SQL изрази

Инструментът за настройка трябва да подчертае промените в SQL израза, за да можете да сравните оригиналната и оптимизираната версия, преди да разположите промените.

Сравнение на плановете за изпълнение на SQL Server

Инструментите за настройка трябва да предоставят сравнение на оригиналния и оптимизираните планове за изпълнение, така че да знаете какво се е променило между версиите.

Статистическо доказателство

Вашият инструмент за настройка трябва да предоставя данни, които показват защо оптимизираният SQL се изпълнява по-бързо от оригиналния SQL израз.

Сложните заявки на SQL Server могат да имат отрицателно въздействие върху производителността на системата. Използвайте тези съвети и висококачествено решение за настройка на производителността, за да изчистите сложността и да оптимизирате ефективността на SQL заявката си.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кой е най-добрият инструмент за сравняване на две бази данни на SQL Server (схема и данни)?

  2. SQL NOT IN не работи

  3. Как да направя заявка за всички дати, по-големи от определена дата в SQL Server?

  4. Намерете всички таблици, съдържащи колона с посочено име - MS SQL Server

  5. TSQL:Как да конвертирам местно време в UTC? (SQL Server 2008)