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

bookХеш-Індексування

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

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

Як це працює?

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

Більше інформації про хешування можна знайти у курсі Огляд алгоритмів та структур даних.

Розглянемо хеш-індекс для системи бібліотечного каталогу, де кожна назва книги індексується за її ISBN (Міжнародний стандартний книжковий номер).

У цьому прикладі ми використовуємо хеш-функцію для перетворення ISBN книги у шістнадцятковий хеш-код, наприклад, 0x7FA4, за допомогою ряду математичних операцій над цифрами ISBN.
Цей хеш-код виступає у ролі унікального ідентифікатора, визначаючи слот у хеш-таблиці, де міститься посилання на відповідний рядок у таблиці з усією інформацією про цю книгу.

Ключові особливості

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

  2. Обмежена підтримка операторів: На відміну від B-tree індексів, хеш-індекси підтримують лише порівняння на рівність (=), але не діапазонні запити (<, >, <=, >=) чи сортування. Це обмеження робить хеш-індекси менш універсальними порівняно з B-tree індексами;

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

Реалізація

Можна реалізувати хеш-індекс у SQL за допомогою наступного оператора:

CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );

У результаті значення column_name1, column_name2,... будуть хешовані, і буде створено хеш-таблицю. Це забезпечить швидший доступ до потрібних рядків даних.

question mark

Який тип запиту отримує найбільшу користь від використання хеш-індексу?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 4.35

bookХеш-Індексування

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

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

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

Як це працює?

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

Більше інформації про хешування можна знайти у курсі Огляд алгоритмів та структур даних.

Розглянемо хеш-індекс для системи бібліотечного каталогу, де кожна назва книги індексується за її ISBN (Міжнародний стандартний книжковий номер).

У цьому прикладі ми використовуємо хеш-функцію для перетворення ISBN книги у шістнадцятковий хеш-код, наприклад, 0x7FA4, за допомогою ряду математичних операцій над цифрами ISBN.
Цей хеш-код виступає у ролі унікального ідентифікатора, визначаючи слот у хеш-таблиці, де міститься посилання на відповідний рядок у таблиці з усією інформацією про цю книгу.

Ключові особливості

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

  2. Обмежена підтримка операторів: На відміну від B-tree індексів, хеш-індекси підтримують лише порівняння на рівність (=), але не діапазонні запити (<, >, <=, >=) чи сортування. Це обмеження робить хеш-індекси менш універсальними порівняно з B-tree індексами;

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

Реалізація

Можна реалізувати хеш-індекс у SQL за допомогою наступного оператора:

CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );

У результаті значення column_name1, column_name2,... будуть хешовані, і буде створено хеш-таблицю. Це забезпечить швидший доступ до потрібних рядків даних.

question mark

Який тип запиту отримує найбільшу користь від використання хеш-індексу?

Select the correct answer

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

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

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

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