Как индексы накладываются на вставку / обновление / удаление таблицы? - PullRequest
0 голосов
/ 30 августа 2018

Говорят, что индексы увеличивают скорость извлечения для строк таблицы, но они накладываются на вставку / обновление / удаление. Я хотел знать, как индексы становятся издержками с точки зрения архитектуры индексов? Эта ссылка мне не понятна - я путаюсь между кластерными и некластеризованными индексами.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Эта связь мне не ясна - я путаюсь между кластерными и некластеризованными индексами.

Итак, я готов объяснить clusters and non-cluster indexes (согласно моему пониманию)

Match

стол: книга

строки: страницы

адрес строки: номер страницы

Пара

Некластерный индекс = Книга и Кластерный индекс = Молочные продукты

Объяснение некластерного индекса

  • Содержание Книги написано в потоке. Но его темы отсортированы на последней странице ( дополнительная страница ) как название темы с номером страницы проблемы.
  • Фактические строки вставлены. Но столбец индекса отсортирован в другом пространстве памяти с адресом строки.
  • Если читатель хочет конкретную тему, то кто будет искать название темы ( отсортированный список ) в индексе.
  • Если выполняется поиск конкретной строки, то ее номер будет получен из индекса.
  • Новая тема добавлена ​​после последней темы. Затем индекс нужно отсортировать по новой теме. И это номер страницы добавлен в индекс.
  • Кроме того, новая строка добавлена ​​как последняя строка. Затем индекс был переупорядочен с новым значением, и его новый адрес строки добавлен в индекс.

Объяснение индекса кластера

  • Здесь страницы и строки вставляются в порядке сортировки.
  • Если страница хочет добавить в Дневник, то страница индексируется как номер страницы (ДАТА согласно Дневнику). И вставлен на место беспокойства.
  • Если строка вставлена ​​в таблицу, таблицу необходимо переупорядочить с новым значением столбца индекса.
  • На Dairy страницы отсортированы. Где как строки таблицы отсортированы. Нет необходимости в отдельном индексе для таблицы молочных и кластерных индексов.

Позвольте мне объяснить с помощью таблицы:

create table #nonCluster (i int, name varchar(10)) 

create table #Cluster (i int, name varchar(10)) 

CREATE NONCLUSTERED INDEX #nonCluster   
    ON #noncluster(i);          -- Here Non-Cluster Index

CREATE CLUSTERED INDEX #Cluster   
    ON #cluster(i);             -- Here Cluster Index

insert #nonCluster values(1,'one'),(9,'nine'),(5,'five')    -- Random data are inserted.
insert #Cluster values(1,'one'),(9,'nine'),(5,'five')       -- Random data are inserted.

select * from #nonCluster       -- Here we see the order of rows. That is un-order.
select * from #Cluster          -- Here we see the order of rows. That is order.

insert #nonCluster values(7,'seven')        -- Random data are inserted.
insert #Cluster values(7,'seven')           -- Random data are inserted.

select * from #nonCluster       -- Here we see the no change on order of rows. Rows are in how we were inserted.
select * from #Cluster          -- Here we see the sorted order of rows.

insert #nonCluster values(2,'two')
insert #Cluster values(2,'two')

select * from #nonCluster       -- Hence explained With help of order of rows.
select * from #Cluster          -- Hence explained With help of order of rows.
0 голосов
/ 30 августа 2018

Любое изменение данных в таблице приводит к изменению индекса. Так, например, вы хотите вставить данные

Без индекса операция будет (прибл.)

1. insert data

С индексом операция будет (прибл.)

1. insert data
2. update the index

Итак, вы можете видеть, что есть дополнительные операции (накладные расходы), потому что есть индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...