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

Индекси на B-Tree срещу Bitmap база данни

От wikipedia:B-Trees и индекси на растерни изображения . Случаите на употреба:

  • B-дърветата са типичният тип индекс, използван, когато правите CREATE INDEX ... в база данни:

    1. Те са много бързи, когато избирате само малка подгрупа от индексните данни (максимум 5%-10% обикновено)
  • Те работят по-добре, когато имате много различни индексирани стойности.
  • Може да се направи комбиниране на няколко B-Tree индекса, но по-простите подходи често са по-ефективни.
  • Те не са полезни, когато има малко отделни стойности за индексираните данни или когато искате да получите голямо (>10% обикновено) подмножество от данните.
  • Всеки индекс на B-Tree налага малко наказание при вмъкване/актуализиране на стойности в индексираната таблица. Това може да е проблем, ако имате много индекси в много натоварена таблица.

  • Тези характеристики правят индексите на B-Tree много полезни за ускоряване на търсенията в OLTP приложения, когато работите с много малки набори от данни наведнъж, повечето заявки филтрират по ID и искате добра едновременна производителност.

  • Растерните индекси са по-специализиран вариант на индекс:

    1. Те кодират индексирани стойности като растерни изображения и затова са много ефективни в пространството.
    2. Склонни са да работят по-добре, когато има малко отделни индексирани стойности
    3. Оптимизаторите на DB могат да комбинират няколко растерни изображения, индексирани много лесно, което позволява ефективно изпълнение на сложни филтри в заявките.
    4. Те са много неефективни при вмъкване/актуализиране на стойности.


    Растеровите индекси се използват най-вече в приложения за съхранение на данни, където базата данни е само за четене, с изключение на ETL процесите, и обикновено трябва да изпълнявате сложни заявки срещу звездна схема , където растерните индекси могат да ускорят филтрирането въз основа на условията във вашите таблици с размери, които обикновено нямат твърде много различни стойности.

Като много кратко резюме:използвайте B-Tree индекси (индексът "по подразбиране" в повечето бази данни), освен ако не сте разработчик на хранилище за данни и знаете ще се възползвате от растерен индекс.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. има ли някаква функция за превод на данни в sql

  2. SUBSTR и INSTR SQL Oracle

  3. Число на Oracle в C# десетичен знак

  4. Процедура за обръщане на низ в PL/SQL

  5. Използване на последователни стойности за първичния ключ в заявка INSERT