insert statement, the
delete statement has a
where clause that can use all the methods
described in Chapter 2, “The Where Clause”, to benefit directly from indexes.
In fact, the
delete statement works
select that is followed by an
extra step to delete the identified rows.
The actual deletion of a row is a similar process to inserting a new
one—especially the removal of the references from the indexes and the
activities to keep the index trees in balance. The performance chart shown
in Figure 8.2 is therefore
very similar to the one shown for
Figure 8.2 Delete Performance by Number of Indexes
In theory, we would expect the best
delete performance for a table without any
indexes—as it is for
insert. If there
is no index, however, the database must read the full table to find the
rows to be deleted. That means deleting the row would be fast but finding
would be very slow. This case is therefore not shown in Figure 8.2.
Nevertheless it can make sense to execute a
delete statement without an index just as it can
make sense to execute a
statement without an index if it returns a large part of the table.
update statements have an execution plan.
delete statement without
where clause is an obvious example in
which the database cannot use an index, although this is a special case
that has its own SQL command:
table. This command has the same effect as
where except that it deletes all rows in one
shot. It is very fast but has two important side effects: (1) it does an
commit (exceptions: PostgreSQL
and SQL Server); (2) it does not execute any triggers.