set statistics
Set UPDATE STATISTICS execution control options
Syntax
set_stats: SET {STATISTICS | STATS} [ HISTOSIZE [=] num ] [ SAMPLING [=] (pct_num, minrows_num, maxrows_num) ] [ AUTORUN [=] (pct_num, minrows_num) ] [ THREADS [=] num]
Description
The SET STATISTICS statement will set the control options to be used by the UPDATE STATISTICS statement.
The HISTOSIZE clause specifies the number of distinct values for each column whose distribution counts are to be kept. The default is 25. The minimum allowed value is 10 and the maximum allowed value is 100.
The SAMPLING clause specifies how much of the database is to be sampled and includes a minimum number of rows, maximum number of rows, and percent of table to be scanned (integer value between 0 and 100) of each table to be sampled. So, for example, a "sampling (10, 100, 10000)
" means that 10% of the number of rows in each table will be sampled but at least 100 (if there are 100 rows) and no more than 10,000 rows must be sampled. The larger these values are, the more accurate will be the distribution statistics but UPDATE STATISTICS will take longer to run. If the SAMPLING clause is omitted the system default is (10, 1000, 10000). The minimum number of rows specified must be at least 100.
The AUTORUN clause specifies how often RDM SQL should automatically run an UPDATE STATISTICS. The pct_num (an integer value greater than or equal to 5) specifies a percentage change in the total number of rows stored in the database since the last update UPDATE STATISTICS execution. When a percentage change in size greater than pct_num occurs, an UPDATE STATISTICS will be automatically executed. The minrows_num is an integer value that specifies the minimum number of rows that must be contained in the database before an UPDATE STATISTICS will automatically be executed. The minimum allowed minrows_num value is 100 rows.
If the AUTORUN clause is not specified then the statistics will only be updated the next time an UPDATE STATISTICS statement is executed. If an AUTORUN was specified in a prior UPDATE STATISTICS, it can be disabled by omitting the AUTORUN clause.
Automatic UPDATE STATISTICS executions occur on the first database open after the specified AUTORUN conditions have occurred. It will block the application (database open call) until it completes. This means that when this occurs, the database open time delay may be quite noticeable.
The THREADS clause can be used to explicitly specify the number of threads to use during UPDATE STATISTICS execution. If not specified, the system will invoke one thread for each CPU/core available on the computer. Each thread collects the stats on a single table. Note that multi-threaded operation is only possible when the database has been opened in shared mode.
Example
open bookshop; set stats histosize=35 sampling=(20,100,5000) autorun=(20,1000) threads=4; update stats on bookshop; select dbname, exectime, totrows, memreqd from sys$dbstats; DBNAME EXECTIME TOTROWS MEMREQD bookshop 0.06 2586 88743 select colname, entry, histo_eq_tot, histo_val from sys$colhisto where colname = "publ_year"; COLNAME ENTRY HISTO_EQ_TOT HISTO_VAL publ_year 1 1 1644 publ_year 2 1 1651 publ_year 3 1 1674 publ_year 4 1 1805 publ_year 5 1 1816 publ_year 6 1 1822 publ_year 7 1 1840 publ_year 8 1 1843 publ_year 9 2 1846 publ_year 10 3 1848 publ_year 11 2 1852 publ_year 12 1 1853 publ_year 13 1 1854 publ_year 14 2 1855 publ_year 15 3 1864 publ_year 16 2 1865 publ_year 17 2 1873 publ_year 18 1 1875 publ_year 19 1 1876 publ_year 20 2 1879 publ_year 21 1 1881 publ_year 22 1 1886 publ_year 23 1 1887 publ_year 24 1 1888 publ_year 25 1 1889 publ_year 26 3 1894 publ_year 27 2 1897 publ_year 28 2 1899 publ_year 29 3 1902 publ_year 30 3 1906 publ_year 31 3 1911 publ_year 32 1 1917 publ_year 33 1 1920 publ_year 34 2 1922 publ_year 35 1 1939
See Also