Using the FORCE and AUTO keywords
In sessions or in databases where the automatic UPDATE
STATISTICS mode is enabled, you can optionally use either the FORCE
keyword
or the AUTO
keyword to control the scope of the UPDATE
STATISTICS statement when it updates the current distribution statistics
of tables and columns in the system catalog. These keywords affect
only table and fragment statistics, and are not valid in operations
on SPL routine statistics.
If you omit both the FORCE
keyword and
the AUTO
keyword, the effect of the UPDATE STATISTICS
statement on table and fragment distribution statistics is determined
by the explicit or default setting of the AUTO_STAT_MODE configuration
parameter, unless the AUTO_STAT_MODE session environment variable
is set to override that configuration parameter for the current session.
Specifying
either of the FORCE
or AUTO
keywords
affects only the current UPDATE STATISTICS operation. The database
server issues an exception if you attempt to include both the FORCE
and
the AUTO
keywords in the same UPDATE STATISTICS statement.
The FORCE keyword
The FORCE keyword refreshes
the statistics for all tables and columns within the specified scope.
If automatic mode for the UPDATE STATISTICS statement is enabled,
the FORCE
keyword overrides automatic mode, so that
values of the STATCHANGE attributes of tables and fragments within
the scope of the FOR TABLE specification are ignored, as if the AUTO_STAT_MODE
setting were OFF for the current UPDATE STATISTICS FORCE operation.
The
two examples that follow apply the FORCE
keyword,
respectively, to the default table scope of UPDATE STATISTICS, and
to a nonfragmented individual table called tableN.
UPDATE STATISTICS FORCE;
UPDATE STATISTICS MEDIUM FOR TABLE tableN FORCE;
- Recalculate the distribution statistics in LOW mode for every permanent table and table fragment in the database, ignoring whether statistics for each table are stale according to their STATCHANGE thresholds.
- Store the new distributions in the system catalog tables.
- Recalculate the column distribution statistics in MEDIUM mode for table tableN.
- Update all the system catalog tables that store distribution statistics for that table.
Including the FORCE
keyword emulates
the previous UPDATE STATISTICS behavior of Informix® database
servers before version 11.70.
The AUTO keyword
The AUTO keyword causes the database server to run the UPDATE STATISTICS statement in automatic mode, but only for tables and fragments whose statistics are missing or stale. The distribution statistics are not refreshed for any tables or fragments whose STATCHANGE value is below the specified threshold.
The
following statements specify the AUTO
keyword.
UPDATE STATISTICS AUTO;
UPDATE STATISTICS MEDIUM FOR TABLE tableN AUTO;
- Examine every permanent table in the database, and recalculate only the missing or stale data distribution statistics for tables and fragments in which the percentage of new, deleted, or changed rows since the table distributions were last calculated exceeds the STATCHANGE threshold for that table. This might be an empty set, if no tables or table fragments exceed their STATCHANGE thresholds.
- If any tables or fragments qualified to be recalculated, store their new statistics in the appropriate system catalog tables.
- If the current distribution statistics for tableN do not exceed the STATCHANGE threshold for that table, take no action.
- If the percentage of new, deleted, or changed rows indicate that the current distributions are stale, recalculate the column distribution statistics for table tableN in MEDIUM mode, and update all the system catalog tables that store distribution statistics for that table.
When sufficiently accurate statistics are already available to the query optimizer for some tables or table fragments, the AUTO option avoids unnecessary recalculations. In that case, an UPDATE STATISTICS AUTO operation requires less time, without detriment to query performance, than a corresponding UPDATE STATISTICS FORCE operation.