PostgreSQL

Як створити індекси в PostgreSQL

Як створити індекси в PostgreSQL

Індекси - це спеціалізовані таблиці пошуку, що використовуються механізмами пошуку даних для прискорення результатів запитів. Індекс - це посилання на інформацію в таблиці. Наприклад, якщо імена в книзі контактів не розташовані в алфавітному порядку, вам доведеться переходити по кожному рядку та шукати кожне ім’я, перш ніж дійти до конкретного номера телефону, який ви шукаєте. Індекс прискорює команди SELECT та фрази WHERE, виконуючи введення даних у командах UPDATE та INSERT. Незалежно від того, вставляються чи видаляються індекси, це не впливає на інформацію, що міститься в таблиці. Індекси можуть бути спеціальними так само, як обмеження UNIQUE допомагає уникнути записів реплік у полі або наборі полів, для яких існує індекс.

Загальний синтаксис

Наступний загальний синтаксис використовується для створення індексів.

>> СТВОРИТИ ІНДЕКС індексу_назви Ім'я таблиці (ім'я_столбця);

Щоб розпочати роботу над індексами, відкрийте pgAdmin Postgresql на панелі програм. Ви знайдете опцію "Сервери", показану нижче. Клацніть правою кнопкою миші цей параметр і підключіть його до бази даних.

Як бачите, "Тест" бази даних вказаний у опції "Бази даних". Якщо у вас його немає, клацніть правою кнопкою миші «Бази даних», перейдіть до опції «Створити» та назвіть базу даних відповідно до ваших уподобань.

Розгорніть опцію «Схеми», і ви знайдете там перелік «Таблиці». Якщо у вас його немає, клацніть правою кнопкою миші, перейдіть до пункту «Створити» та натисніть опцію «Таблиця», щоб створити нову таблицю. Оскільки ми вже створили таблицю "emp", ви можете побачити її у списку.

Спробуйте запит SELECT у редакторі запитів, щоб отримати записи таблиці 'emp', як показано нижче.

>> ВИБЕРІТЬ * З загальнодоступного.emp ЗАМОВИТИ ЗА “id” ASC;

Наступні дані будуть у таблиці 'emp'.

Створення індексів з однією колонкою

Розгорніть таблицю "emp", щоб знайти різні категорії, e.g., Стовпці, обмеження, індекси тощо. Клацніть правою кнопкою миші на «Індекси», перейдіть до пункту «Створити» та натисніть «Індекс», щоб створити новий індекс.

Створіть індекс для даної таблиці 'emp' або відображеного дисплея, використовуючи діалогове вікно Індекс. Тут є дві вкладки: «Загальне» та «Визначення»."На вкладці" Загальні "введіть конкретний заголовок нового індексу в поле" Ім'я ". Виберіть «табличний простір», під яким буде зберігатися новий індекс, за допомогою випадаючого списку поруч із «Простір таблиць»."Як і в області" Коментар ", робіть тут індексні коментарі. Щоб розпочати цей процес, перейдіть на вкладку "Визначення".

Тут вкажіть «Спосіб доступу», вибравши тип індексу. Після цього, щоб створити свій індекс як "Унікальний", там перелічено ще кілька варіантів. У області "Стовпці" натисніть на знак "+" і додайте імена стовпців, які будуть використовуватися для індексації. Як бачите, ми застосовували індексацію лише до стовпця "Телефон". Для початку виберіть розділ SQL.

На вкладці SQL відображається команда SQL, яка була створена вашими введеннями в діалозі Індекс. Натисніть кнопку «Зберегти», щоб створити індекс.

Знову перейдіть до опції "Таблиці" та перейдіть до таблиці "emp". Оновіть параметр "Індекси", і ви знайдете щойно створений індекс "index_on_phone", перерахований у ньому.

Тепер ми виконаємо команду EXPLAIN SELECT, щоб перевірити результати для індексів за допомогою речення WHERE. Це призведе до наступного виводу, який говорить: 'Seq Scan on emp.'Ви можете здивуватися, чому це сталося під час використання індексів.

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

Створення кількох індексів стовпців

Щоб створити індекси з декількома стовпцями, відкрийте оболонку командного рядка і розгляньте наступну таблицю «студент», щоб розпочати роботу над індексами з кількома стовпцями.

>> ВИБЕРІТЬ * ВІД студента;

Напишіть у ньому такий запит CREATE INDEX. Цей запит створить індекс з назвою 'new_index' у стовпцях 'sname' та 'age' таблиці 'student'.

>> СТВОРИТИ ІНДЕКС new_index ON Student (sname, age);

Тепер ми перелічимо властивості та атрибути новоствореного індексу 'new_index' за допомогою команди '\ d'. Як ви можете бачити на малюнку, це індекс типу btree, який застосовувався до стовпців "sname" та "age".

>> \ d new_index;

Створіть УНІКАЛЬНИЙ індекс

Щоб побудувати унікальний індекс, припустимо наступну таблицю 'emp'.

>> ВИБЕРІТЬ * ВІД emp;

Виконайте в оболонці запит CREATE UNIQUE INDEX, після чого в стовпці "name" таблиці "emp" буде вказано ім’я індексу 'empind'. На виході ви бачите, що унікальний індекс не можна застосувати до стовпця з повторюваними значеннями "name".

>> СТВОРИТИ унікальний ІНДЕКС empind ON emp (ім'я);

Обов’язково застосовуйте унікальний індекс лише до стовпців, які не містять дублікатів. Для таблиці 'emp' ви можете припустити, що лише стовпець 'id' містить унікальні значення. Отже, ми застосуємо до нього унікальний індекс.

>> СТВОРИТИ унікальний ІНДЕКС empind ON emp (id);

Нижче наведено атрибути унікального індексу.

>> \ d закінчився;

Індекс падіння

Оператор DROP використовується для видалення індексу з таблиці.

>> ІНДЕКС ПАДАННЯ сповільнюється;

Висновок

Хоча індекси призначені для підвищення ефективності баз даних, в деяких випадках використовувати індекс неможливо. При використанні індексу слід враховувати наступні правила:

SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...