Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Indeksy klastrowe w kolumnach bez tożsamości, aby przyspieszyć wstawianie zbiorcze?

Cóż, przetestowałem to i umieszczenie klastrowego indeksu w dwóch kolumnach „definiujących porcje” zwiększa wydajność mojej tabeli.

Wstawianie fragmentu jest teraz stosunkowo szybkie w porównaniu do sytuacji, w której miałem klastrowany klucz IDENTITY i mniej więcej tak szybko, jak wtedy, gdy nie miałem żadnego klastrowanego indeksu. Usunięcie fragmentu jest szybsze niż z indeksem klastrowym lub bez niego.

Myślę, że fakt, że wszystkie rekordy, które chcę usunąć lub wstawić, mają gwarancję, że znajdą się razem na określonej części dysku twardego, przyspiesza tworzenie tabel - wydaje mi się to logiczne.

Aktualizacja :Po rocznym doświadczeniu z tym projektem mogę powiedzieć, że aby takie podejście zadziałało, konieczne jest zaplanowanie regularnej przebudowy wszystkich indeksów (robimy to raz w tygodniu). W przeciwnym razie indeksy bardzo szybko ulegają fragmentacji, co powoduje utratę wydajności. Niemniej jednak jesteśmy w trakcie migracji do nowego projektu bazy danych z partycjonowanymi tabelami, co jest w zasadzie lepsze pod każdym względem - z wyjątkiem kosztów licencji Enterprise Server, ale już o tym zapomnieliśmy. Przynajmniej ja mam.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie tożsamości na serwerze połączonym nie powiodło się

  2. Obcinaj (nie okrągłe) miejsca dziesiętne w SQL Server

  3. Znalezienie mediany między DWOMA datami SQL Server 2008

  4. Dlaczego odczyty logiczne dla okienkowych funkcji agregujących są tak wysokie?

  5. Jakie są zasady używania parametrów wewnętrznych w SSRS?