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

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

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

У певних ситуаціях для ефективного пошуку інформації потрібен індекс, але використання 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

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

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

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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

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

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

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

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

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