И еще одна важная тема, когда мы говорим в частности про ключи в базах данных - это индексы. Часто эту тему считают само собой разумеющейся и про нее не рассказывают, а на собесе спросить могут очень запросто.
Так вот, представь, что у тебя база с огромными таблицами, каждая от миллиона строк и достаточно большим числом колонок. Все нормализации, которые могли помочь уже проведены. Но только вот незадача: запрос, который должен возвращать количество, например, корпоративных клиентов в одной из таблиц, работает ну очень долго, так как в запросе есть поле, по которому мы фильтруем записи:
SELECT COUNT(*) FROM `customers` WHERE `customer_type` = "B2B"
В данном случае несчастной базе нужно пробежать по всему миллиону строк и понять, что написано в поле customer_type: B2B или B2C, к примеру. Такая операция может занять 1-2 секунды, а если записей станет не миллион, а 10 или 20 миллионов? Представляешь как запрос тормозить будет? И вот для того чтобы повысить скорость наиболее частых запросов и существуют индексы. Как ты понимаешь, и этот термин злые айтишники утащили из реального мира, а именно - из книг, где говорится, что Глава 1 находится на странице 5, а Глава 15 - на странице 205.
И если теперь мы создадим с тобой индекс для таблицы клиентов и он будет состоять пока из одного поля “customer_type”, то запрос будет работать уже сильно быстрее. Когда индекс создается, база данных немного уходит в себя, так как ей нужно просканировать всю таблицу и вычислить, где какое значение по полю из индекса и записать его в список индексов.
Индексы эффективны именно благодаря тому, что БД ищет нужный не перебирая одну запись за другой, а используя бинарный поиск. о нем более подробно я расскажу в статья про сложности алгоритмов, пока же просто запомни, что бинарный поиск делит все количество элементов пополам и понимает, в левой или правой части находится искомая запись, потом еще пополам и еще и еще, пока не найдет ту запись, которую мы ему сказали найти. И в нашем случае с таблицей в миллион записей, нужная найдется не на миллионный, а не более чем 20 раз таких поисков. Чувствуешь разницу?
И да, есть один индекс, который создается автоматически при создании таблицы - это индекс по ключевому полю, о которых я говорил в прошлой статье.
Вот и вся самая основная информация по индексам. Меньше было просто нельзя рассказать, а больше - самостоятельно посмотришь, этой инфы в интернете пруд пруди.
Подписывайся и зови друзей!