База данных перегружает удалить строки с отношениями?


всем добрый день!

Я с сомнением, и я хочу, обзоры repeito.

Я строю систему php + laravel.

у Меня есть отношения между таблицами, например: Users->Roles.

Предполагается, что есть 10.000 users, зарегистрированных с Role == Admin. Если я удаляю a Role Admin, система теоретически должен был бы удалить 10.000 строки таблицы role_users потому что Role Admin перестанет существовать.

Это приведет 10.000 queries? Перегрузит BD?

Объятий

Author: Brumazzi DB, 2016-05-18

2 answers

В любой реляционной системе, если у вас есть отношения, что указывает на то, что удаления родительского элемента удаляет дочерние элементы каскада, удаления одного элемента отца и всех его детей, происходит в одном query.

, Если это будет перегружать или не базы зависит от потока удаления каскада и размер масса данных, чтобы удалить. Записи пользователей могут иметь другие отношения со своими детьми, которые также могут быть удалены в каскад, пример. Но в целом, удалить быстро. Особенно, если отношения между элементами наличии индексирования в столбце " стороны "сын" отношения.

Вес всего находится в обработке базы данных. Pra приложения, одного запросов в одном соединении выполняется.

 3
Author: Garoto de Programa, 2016-05-18 20:24:21

Он будет генерировать да-запросов, чтобы удалить и создаст дополнительную работу, чтобы поднять все места, которые должны быть удалены вместе. Но такой подход, on delete cascade, который делает его выпадать ключи, связанные с тем, является более быстрой, что если вы попросите сделать 10mil deletes.

, Если будет перегружать не чтобы сказать, во многом будет зависеть от вашей машины. Но это всегда интересно создавать индексы для ключей всех таблиц. Дополнительное чтение: http://www.codesynthesis.com/~boris/blog/2012/04/12/explicit-sql-delete-vs-on-delete-cascade/

 1
Author: Guerra, 2016-05-18 20:25:13