Для SQL-сервера...
Я думаю, важно знать, что если вы удаляете все записи для очень большой таблицы (имеется в виду множество записей), вам нужно сначала усечь, а затем удалить индексы. Это намного эффективнее.
Если вы хотите удалить подмножество записей и к вам применены индексы, используйте синтаксис DELETE FROM {table} WHERE {condition}. Если вы это сделаете, вы должны сначала удалить из зависимых таблиц в порядке иерархии зависимостей. По сути, это полная противоположность тому, как вы вставляете записи, начиная с независимых таблиц.
УДАЛИТЬ записи с иерархией зависимостей таблиц:
Зависимая/дочерняя таблица (зависит от таблицы зависимостей):
DELETE FROM [table_dependent]; -- "dependent" is a relative term since this may be part of a hierarchy; a FK in this table points to the PK of the [table_independent] table; in a physical database model, this table is sometimes referred to as the child table
Зависимость/Родительская таблица:
DELETE FROM [table_independent]; -- "independent" is a relative term since this may be part of a hierarchy; the PK of this table has a FK in a [table_dependent] table; in a physical database model, this is sometimes referred to as the parent table.
Примечание:
При наличии иерархии записи из «самой глубокой» зависимой таблицы должны быть удалены в первую очередь. Это означает, что индексы для этой таблицы также должны быть удалены в первую очередь. Затем вы должны работать вверх по иерархии, пока не дойдете до родительской таблицы.
ВСТАВЬТЕ записи с иерархией зависимостей таблиц:
SET IDENTITY_INSERT [table_independent] ON
INSERT INTO [table_independent]
(
[column that is not identity column],
[column that is not identity column],
[column that is not identity column]
)
VALUES
(
'1',
'2',
'3'
);
SET IDENTITY_INSERT [table_independent] OFF
SET IDENTITY_INSERT [table_dependent] ON
INSERT INTO [table_dependent]
(
[column that is not identity column],
[column that is not identity column],
[table_independent fk column]
)
VALUES
(
'1',
'2',
'3'
);
SET IDENTITY_INSERT [table_dependent] OFF
person
MacGyver
schedule
28.09.2015