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

Вредни, широко разпространени митове за производителността на SQL Server

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

Така че реших, че ще започна нова серия, за да помогна за потушаването на някои от тези митове. Не за да сочат хората и да докажат, че грешат, а за да спрем разпространението. Когато правят тези общи изявления на работното си място, или в Twitter, или във форуми, ако не бъдат проверени, те могат да „научат“ впечатляващи или по-малко опитни потребители.

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

Ето някои от "фактите", които ми казаха наскоро, без определен ред:

  • „Клъстериран индекс винаги е по-добър от неклъстериран индекс“
  • „Динамичният SQL направи заявката ми бавна“
  • „PIVOT е по-бърз от SUM(CASE)“
  • „NULL винаги причиняват ужасни проблеми с производителността“
  • „Плановете за изпълнение са безполезни, освен за липсващи индекси“
  • „NOLOCK е добре, защото много хора го използват“
  • „Преоразмеряването на колоните varchar/nvarchar е наред“

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

Имате ли някакви митове за представяне, които се разпространяват като абсолютен факт, но подозирате (или може би дори знаете), че те не винаги са верни? Кажете ми в коментарите по-долу, в Twitter или на [email protected].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете и попълните таблица в една стъпка като част от операция за импортиране на CSV?

  2. Как да получите статистическа информация за SQL Server с помощта на системни статистически функции

  3. Разлика между числови, плаващи и десетични числа в SQL Server

  4. Защо се счита за лоша практика да се използват курсори в SQL Server?

  5. SQL Server е еквивалентен на изгледа CREATE OR REPLACE на Oracle