Коли я повинен використовувати KEY
, PRIMARY KEY
, UNIQUE KEY
і INDEX
?
Коли я повинен використовувати KEY
, PRIMARY KEY
, UNIQUE KEY
і INDEX
?
Відповіді:
KEY
і INDEX
є синонімами в MySQL. Вони означають те саме. У базах даних ви б використовували індекси для покращення швидкості пошуку даних. Індекс зазвичай створюється на колонках , які використовуються в JOIN
, WHERE
і ORDER BY
застережень.
Уявіть, що у вас є таблиця з назвою, users
і ви хочете шукати всіх користувачів, які мають прізвище "Smith". Без індексу базі даних доведеться пройти всі записи таблиці: це повільно, адже чим більше записів у вашій базі даних, тим більше роботи потрібно зробити, щоб знайти результат. З іншого боку, індекс допоможе базі даних швидко перейти на відповідні сторінки, де зберігаються записи "Сміта". Це дуже схоже на те, як ми, люди, проходимо через каталог телефонної книги, щоб знайти когось за прізвищем: Ми не починаємо пошук у каталозі від обкладинки до обкладинки, доки ми вставляємо інформацію в порядку, який ми можемо використовуйте для швидкого переходу на сторінки "S".
Первинні та унікальні ключі схожі. Первинний ключ - це стовпчик або комбінація стовпців, які можуть однозначно ідентифікувати рядок. Це особливий випадок унікального ключа . У таблиці може бути не більше одного первинного ключа, але більше одного унікального ключа. Коли ви вказуєте унікальний ключ для стовпця, жоден два окремі рядки таблиці не можуть мати однакове значення.
Також зауважте, що стовпці, визначені як первинні ключі або унікальні ключі, автоматично індексуються в MySQL.
passengers
такими полями:, (id, first_name, last_name, age, passport_number)
ви зазвичай встановите id
стовпець, який буде первинним ключем. Первинний ключ - це автоматично унікальний ключ. Основна відмінність полягає в тому, що у вас може бути лише один первинний ключ у таблиці, і що стовпець не може містити NULL
значень. Там немає необхідності , щоб налаштувати id
колонку бути , UNIQUE
тому що, встановивши його на первинний ключ, він автоматично гарантує унікальність ... Тоді ви могли б також встановити passport_number
на UNIQUE
так , що не більше ніж один пасажир ...
NULL
в цей стовпець без проблем.
KEY та INDEX - синоніми.
Ви повинні додати індекс, коли вимірювання продуктивності та EXPLAIN показують, що запит неефективний через відсутність індексу. Додавання індексу може підвищити ефективність запитів (але це може уповільнити зміни до таблиці).
Ви повинні використовувати UNIQUE, коли ви хочете зіставити значення в цьому стовпці (або стовпцях), щоб бути унікальними, так що спроби вставити повторювані значення призводять до помилки.
ПЕРШИЙ КЛЮЧ - це і унікальне обмеження, і це також означає, що стовпець НЕ НУЛЬНИЙ. Він використовується для надання особі кожному рядку. Це може бути корисно для з'єднання з іншою таблицею через обмеження зовнішнього ключа. Хоча для таблиці не потрібно мати ПЕРШИЙ КЛЮЧ, зазвичай це хороша ідея.
Первинний ключ не дозволяє NULL
значення, але унікальний ключ дозволяє NULL
значення.
Ми можемо оголосити лише один первинний ключ у таблиці, але у таблиці може бути кілька унікальних ключів (призначення стовпців).
PRIMARY KEY
І UNIQUE KEY
схожі, за винятком того, що він має різні функції. Первинний ключ робить рядок таблиці унікальним (тобто не може бути 2 ряду з точно такою ж клавішею). У таблиці бази даних може бути лише 1 первинний ключ.
Унікальний ключ робить стовпчик таблиці в рядку таблиці унікальним (тобто жоден рядок 2 таблиці не може мати таке саме значення). Ви можете мати більше 1 унікального стовпчика ключових таблиць (на відміну від первинного ключа, який означає, що лише 1 стовпець таблиці в таблиці унікальний).
INDEX
також створює унікальність. MySQL (приклад) створить таблицю індексації стовпця, який індексується. Таким чином, простіше отримати значення рядка таблиці, коли запит запитується в індексованому стовпці таблиці. Недоліком є те, що якщо ви робите багато оновлень / видалення / створення, MySQL повинен керувати таблицями індексації (і це може бути вузьким місцем продуктивності).
Сподіваюсь, це допомагає.
UNIQUE KEY
може бути, NULL
але PRIMARY KEY
не може бути NULL
.
Унікальні ключі: стовпці, в яких немає двох рядків, схожі
Первинний ключ: Колекція мінімальної кількості стовпців, яка може однозначно ідентифікувати кожен рядок таблиці (тобто жодні два рядки не схожі у всіх стовпцях, що складають первинний ключ). У таблиці може бути більше одного первинного ключа. Якщо існує унікальний ключ, то це первинний ключ (а не "первинний ключ"). Якщо не існує унікального ключа, то для ідентифікації такого рядка потрібно буде більше одного значення стовпця (ім'я, прізвище, ім'я батька, ім'я матері), яке може містити в деяких таблицях первинний ключ.
Індекс: використовується для оптимізації запитів. Якщо ви збираєтеся шукати або сортувати результати на основі якогось стовпця багато разів (наприклад, в основному люди збираються шукати учнів за іменем, а не за їх роликом. індексується ", наприклад, з алгоритмом двійкового дерева.
Первинний ключ - ми можемо помістити в таблицю лише один первинний ключ, і ми не можемо залишати цей стовпець порожнім під час введення значень у таблицю.
Унікальний ключ - ми можемо помістити більше одного унікального ключа на стіл, і ми можемо залишити цей стовпець порожнім під час введення значень у таблицю. стовпця приймають унікальні значення (не однакові), коли ми застосовували первинний та унікальний ключ.
Первинний ключ використовується для роботи з різними таблицями. Це основа реляційних баз даних. Якщо у вас є база даних книг, краще створити 2 таблиці - 1) книги та 2) авторів з первинним ключем INT "id". Тоді ви використовуєте id у книгах замість імені авторів.
Унікальний ключ використовується, якщо ви не хочете мати повторні записи. Наприклад, ви можете мати заголовок у таблиці книг і хочете бути впевненим, що для кожного заголовка є лише один запис.
Унікальний ключ:
Первинний ключ