Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Індексація B-Дерева | Оптимізація Запитів.Індекси
Оптимізація SQL та Особливості Запитів

Індексація B-Дерева

Свайпніть щоб показати меню

B-дерево-індекс — це збалансована деревоподібна структура даних, яка часто використовується в базах даних для ефективної організації та пошуку великих обсягів даних.
B-дерева дуже схожі на бінарні дерева пошуку (BST), але вузли в B-дереві можуть мати більше ніж двох нащадків.

B-дерево зберігає ключі у відсортованому порядку всередині вузлів, що дозволяє швидко отримувати дані шляхом ієрархічного проходження від кореня до листових вузлів. Індексація за B-деревом добре підходить для діапазонних запитів та запитів на рівність, що робить її популярним вибором для оптимізації продуктивності баз даних.

Note
Дізнайтеся більше

Діапазонний запит — це операція бази даних, яка отримує дані в межах заданого діапазону значень для певного атрибута або стовпця. Це дозволяє отримувати записи, що потрапляють у визначений діапазон, наприклад, значення між двома датами або в межах числового інтервалу. Для діапазонного пошуку використовуються такі оператори: >, <, >=, <=.

Запит на рівність — це операція бази даних, яка отримує дані на основі точного співпадіння заданого значення для певного атрибута або стовпця. Це дозволяє знаходити записи, які точно відповідають певному критерію, наприклад, знаходження всіх клієнтів із конкретною електронною адресою або певним ідентифікатором користувача. Такі запити включають оператори = та <>.

Як це працює?

B-дерево-індекс організовує дані у ієрархічній структурі, де кожен вузол містить фіксовану кількість ключів і покажчиків на дочірні вузли.
B-дерева підтримують баланс, гарантуючи, що всі листові вузли знаходяться на одному рівні, що оптимізує операції пошуку.
Під час пошуку певного ключа алгоритм B-дерева проходить дерево від кореневого вузла до листових, використовуючи бінарний пошук для ефективного знаходження потрібного ключа.

Пошук за індексом включає проходження дерева до листових вузлів, послідовне проходження ланцюжка листових вузлів для знаходження відповідних записів і отримання фактичних даних з диска.

На рисунку показано пошук ключа 302:

  1. Структура дерева пошуку — це тип дерева, де кожен вузол має два покажчики: лівий покажчик вказує на дочірні вузли зі значеннями меншими за значення батьківського вузла, а правий — на дочірні вузли зі значеннями більшими за значення батьківського вузла;

  2. У B-дереві кореневий вузол може містити кілька індексних значень. Наприклад, якщо корінь містить три різні значення, він матиме три покажчики, кожен з яких вказує на діапазон значень між цими ключами;

  3. Для пошуку ключа, наприклад 302, пошук починається з кореневого вузла і слідує відповідним покажчикам до листових вузлів. Пошук завершується після проходження трьох блоків дерева, як показано на схемі, виділеній червоним;

  4. Для пошуку діапазону значень, починаючи з 302, можна використовувати горизонтальні покажчики між листовими вузлами. Наприклад, отримання значень від 302 до 502 здійснюється послідовним проходженням листових вузлів.

Note
Примітка

Ключ для пошуку в індексі B-дерева формується зі значень, що зберігаються в індексованих стовпцях таблиці бази даних. Наприклад, якщо індекс створено на стовпці "client_id", ключем для пошуку буде фактичне значення "client_id". Кожне унікальне числове значення в індексованому стовпці виступає ключем у B-дереві, що спрощує пошук і отримання відповідних рядків у таблиці бази даних.

Переваги та недоліки

На відміну від стандартної структури даних Binary Search Tree, вузли B-tree можуть містити більше ніж 2 нащадки. Типове максимальне число нащадків для одного вузла зазвичай встановлено на 16.

Реалізація індексу

Щоб створити B-tree індекс для стовпця у PostgreSQL, можна використати наступну SQL-команду:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Оскільки B-tree індекс є індексом за замовчуванням у SQL, також можна використати таку інструкцію для його створення:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Примітка

У SQL, коли створюється таблиця з обмеженням первинного ключа, більшість систем керування базами даних автоматично створюють індекс на стовпці, вказані у первинному ключі. Цей індекс допомагає забезпечити унікальність первинного ключа, а також підвищує продуктивність запитів, які виконують пошук або об'єднання за стовпцями первинного ключа.

question mark

Яка операція НЕ призведе до реорганізації або перебалансування B-дерева індексу в PostgreSQL?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Індексація B-Дерева

B-дерево-індекс — це збалансована деревоподібна структура даних, яка часто використовується в базах даних для ефективної організації та пошуку великих обсягів даних.
B-дерева дуже схожі на бінарні дерева пошуку (BST), але вузли в B-дереві можуть мати більше ніж двох нащадків.

B-дерево зберігає ключі у відсортованому порядку всередині вузлів, що дозволяє швидко отримувати дані шляхом ієрархічного проходження від кореня до листових вузлів. Індексація за B-деревом добре підходить для діапазонних запитів та запитів на рівність, що робить її популярним вибором для оптимізації продуктивності баз даних.

Note
Дізнайтеся більше

Діапазонний запит — це операція бази даних, яка отримує дані в межах заданого діапазону значень для певного атрибута або стовпця. Це дозволяє отримувати записи, що потрапляють у визначений діапазон, наприклад, значення між двома датами або в межах числового інтервалу. Для діапазонного пошуку використовуються такі оператори: >, <, >=, <=.

Запит на рівність — це операція бази даних, яка отримує дані на основі точного співпадіння заданого значення для певного атрибута або стовпця. Це дозволяє знаходити записи, які точно відповідають певному критерію, наприклад, знаходження всіх клієнтів із конкретною електронною адресою або певним ідентифікатором користувача. Такі запити включають оператори = та <>.

Як це працює?

B-дерево-індекс організовує дані у ієрархічній структурі, де кожен вузол містить фіксовану кількість ключів і покажчиків на дочірні вузли.
B-дерева підтримують баланс, гарантуючи, що всі листові вузли знаходяться на одному рівні, що оптимізує операції пошуку.
Під час пошуку певного ключа алгоритм B-дерева проходить дерево від кореневого вузла до листових, використовуючи бінарний пошук для ефективного знаходження потрібного ключа.

Пошук за індексом включає проходження дерева до листових вузлів, послідовне проходження ланцюжка листових вузлів для знаходження відповідних записів і отримання фактичних даних з диска.

На рисунку показано пошук ключа 302:

  1. Структура дерева пошуку — це тип дерева, де кожен вузол має два покажчики: лівий покажчик вказує на дочірні вузли зі значеннями меншими за значення батьківського вузла, а правий — на дочірні вузли зі значеннями більшими за значення батьківського вузла;

  2. У B-дереві кореневий вузол може містити кілька індексних значень. Наприклад, якщо корінь містить три різні значення, він матиме три покажчики, кожен з яких вказує на діапазон значень між цими ключами;

  3. Для пошуку ключа, наприклад 302, пошук починається з кореневого вузла і слідує відповідним покажчикам до листових вузлів. Пошук завершується після проходження трьох блоків дерева, як показано на схемі, виділеній червоним;

  4. Для пошуку діапазону значень, починаючи з 302, можна використовувати горизонтальні покажчики між листовими вузлами. Наприклад, отримання значень від 302 до 502 здійснюється послідовним проходженням листових вузлів.

Note
Примітка

Ключ для пошуку в індексі B-дерева формується зі значень, що зберігаються в індексованих стовпцях таблиці бази даних. Наприклад, якщо індекс створено на стовпці "client_id", ключем для пошуку буде фактичне значення "client_id". Кожне унікальне числове значення в індексованому стовпці виступає ключем у B-дереві, що спрощує пошук і отримання відповідних рядків у таблиці бази даних.

Переваги та недоліки

На відміну від стандартної структури даних Binary Search Tree, вузли B-tree можуть містити більше ніж 2 нащадки. Типове максимальне число нащадків для одного вузла зазвичай встановлено на 16.

Реалізація індексу

Щоб створити B-tree індекс для стовпця у PostgreSQL, можна використати наступну SQL-команду:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Оскільки B-tree індекс є індексом за замовчуванням у SQL, також можна використати таку інструкцію для його створення:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Примітка

У SQL, коли створюється таблиця з обмеженням первинного ключа, більшість систем керування базами даних автоматично створюють індекс на стовпці, вказані у первинному ключі. Цей індекс допомагає забезпечити унікальність первинного ключа, а також підвищує продуктивність запитів, які виконують пошук або об'єднання за стовпцями первинного ключа.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2
some-alt