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

Проблеми с фрагментирането на SQL Server

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

Ако това не е автоматично нарастващо число и новите редове може да съдържат стойности, които биха били подредени някъде между съществуващите стойности, тогава SQL Server основно ще избута данните на диска, където принадлежат (за да запази реда на ключовите стойности на клъстерирания индекс), създавайки фрагментация и потенциално сериозни режийни разходи, тъй като IO записва допълнително забавяне на базата данни.

Подозирам, че имате същия проблем със стойностите на UserRecord.

Така че това, което бих направил, е да добавя отделен клъстерен автоматично увеличаващ се първичен ключ към всяка таблица и да преработя вашите FK препратки и заявки, където е необходимо.




  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. Кои потребителски идентификационни данни използва Integration Services Catalog за изпълнение на пакети?

  3. Как мога да открия, че заявката за създаване, актуализиране, изтриване е успешна в Codeigniter

  4. Защо моето ляво присъединяване на t-sql не работи?

  5. Добавете колона към таблица, ако все още не съществува