sql >> Databáze >  >> RDS >> Sqlserver

Seskupené indexy na neidentitních sloupcích pro urychlení hromadného vkládání?

Dobře, otestoval jsem to a umístění seskupeného indexu do dvou sloupců „definujících bloky zvyšuje výkon mé tabulky.

Vložení chunku je nyní relativně rychlé ve srovnání se situací, kdy jsem měl seskupený klíč IDENTITY, a zhruba stejně rychlé, jako když jsem žádný seskupený index neměl. Odstranění bloku je rychlejší než s nebo bez clusterovaného indexu.

Myslím, že skutečnost, že všechny záznamy, které chci smazat nebo vložit, jsou zaručeně všechny pohromadě na určité části pevného disku, zrychluje tabulky - zdálo by se mi to logické.

Aktualizovat :Po roční zkušenosti s tímto designem mohu říci, že aby tento přístup fungoval, je nutné naplánovat pravidelnou přestavbu všech indexů (děláme jednou týdně). V opačném případě se indexy velmi brzy roztříští a dojde ke ztrátě výkonu. Nicméně jsme v procesu migrace na nový databázový design s dělenými tabulkami, který je v zásadě ve všech směrech lepší - kromě nákladů na licenci Enterprise Server, ale na to jsme již zapomněli. Alespoň já.



  1. Získání posledního vloženého ID z MySQL v Yii

  2. Django Call uložená procedura na druhé databázi

  3. Načítání seskupení z tabulek many-to-many

  4. DataTable s Ajaxem nefunguje dobře po použití serverSide:true