digital-garden/dev/database/Индекс для внешнего ключа таблицы БД.md
Struchkov Mark deea8586ba
All checks were successful
continuous-integration/drone/push Build is passing
Индекс для внешнего ключа таблицы БД.md
2024-10-11 01:13:42 +03:00

38 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- maturity/🌱
date: 2024-10-11
zero-link:
parents:
linked:
---
При создании внешнего ключа в базе данных важно не забывать добавлять индекс на связанный столбец.
Внешний ключ обеспечивает связь между двумя таблицами, гарантируя, что значения в одном столбце соответствуют значениям в другой таблице. ==При выполнении операций, таких как SELECT, UPDATE или DELETE, СУБД должна проверить целостность данных. Без индекса проверка становится затратной по времени, так как приходится сканировать всю таблицу для поиска нужных записей==. Индекс решает эту проблему, значительно ускоряя поиск и проверку данных.
Рассмотрим пример, где мы удаляем строку из таблицы, у которой есть связь с другой таблицей.
![600](../../meta/files/images/Pasted%20image%2020240331093028.png)
Поиск записи в таблице происходит быстро, так как удаление выполняется по первичному ключу. Однако, у нас есть связь с другой таблицей, и ==самый долгий этап это проверка связей с этой таблицей.==
Добавим индекс на внешний ключ и проведем повторный эксперимент.
![600](../../meta/files/images/Pasted%20image%2020240331093524.png)
Мы получили ускорение в 2055 раз!
***
## Мета информация
**Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]]
**Родитель**:: [[Производительность SQL запросов]]
**Источник**::
**Создана**:: [[2024-10-11]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->