Struchkov Mark
deea8586ba
All checks were successful
continuous-integration/drone/push Build is passing
38 lines
2.4 KiB
Markdown
38 lines
2.4 KiB
Markdown
---
|
||
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) -->
|
||
|