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

Как да решите кога да използвате индекс в колона на таблица

Като цяло моята стратегия за индексиране би била нещо подобно (засега използвам изключително SQL Server - адаптирайте се към вашата собствена система от бази данни, ако е необходимо):

  • изберете добър ключ за клъстериране - не е GUID, не е VARCHAR(250) или нещо такова - доброто ключът за клъстериране е тесен, уникален, стабилен, непрекъснато нарастващ - нещо като INT IDENTITY перфектно е. Прави това ваш клъстърен първичен ключ -> дава ви първия ви индекс в таблицата

  • за всяка колона, която се използва като външен ключ в друга таблица - добавете индекс. Може да бъде индекс на една колона - или може да е съставен индекс - каквото работи най-добре за вашия случай. Важно е колоната за външен ключ да бъдепърва колона в този индекс (ако използвате съставен индекс) - в противен случай предимствата за JOIN или за проверка на референтната цялост няма да бъдат достъпни за вашата система

И това е всичко за сега.

След това:стартирайте вашата система - наблюдавайте и измервайте - установете базова линия. Достатъчно бързо ли е приложението? Ако да -> сте готови - приберете се вкъщи и се насладете на свободното си време.

Ако не:тогава започнете да събирате данни и индикации защо приложението не е достатъчно бързо. Вижте напр. неща като DMV в SQL Server, които ви казват за най-лошо представящите се заявки, или липсващия индекс DMV . Анализирайте ги. Вижте какво можете да подобрите. Добавете един индекс наведнъж и отново:наблюдавайте, измервайте, сравнявайте с вашата базова линия.

Ако имате подобрение -> оставете този индекс на място и това измерване е вашата нова базова линия. Изплакнете и повторете, докато вие (и вашите потребители) сте доволни от работата на приложението (и след това приберете се вкъщи и се насладете на почивката си).

Прекомерното индексиране в SQL Server може да бъде по-лошо отколкото без никакви индекси. Не започвайте с твърде много индекси като начало! Установете само добрите клъстериран PK и чужд ключ неклъстерни индекси - това е всичко - след това наблюдавайте, измервайте, оптимизирайте и повторете този цикъл.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при вмъкване на стойност, съдържаща апостроф

  2. запитване на двоична колона, като се използва като в sql сървър

  3. Консолидиране на екземпляр на SQL Server чрез клъстериране и подреждане

  4. Заобикаляне на ограничението за максимални колони на SQL Server 1024 и размер на записа 8kb

  5. Планът, базиран на набор, работи по-бавно от функция със скаларни стойности с много условия