16. -- Estimator 例子的脚本;
SELECT * FROM hr.employees WHERE job_id = 'SH_CLERK';
SELECT COUNT(DISTINCT job_id) FROM hr.employees;
SELECT owner, table_name, column_name, num_distinct,
density
FROM dba_tab_col_statistics
WHERE owner = 'HR' AND table_name = 'EMPLOYEES' AND
column_name = 'JOB_ID';
SELECT owner, table_name, num_rows, blocks,
avg_row_len
FROM dba_tab_statistics
WHERE owner = 'HR' AND table_name = 'EMPLOYEES';
-- OPTIMIZER_INDEX_COST_ADJ 参数的例子;
CREATE TABLE t1 AS
SELECT MOD(ROWNUM, 200) n1, MOD(ROWNUM, 200) n2
FROM dba_objects WHERE ROWNUM <= 3000;
CREATE INDEX t_i1 ON t1(n1);
EXEC dbms_stats.gather_table_stats(USER, 't1',
CASCADE=>TRUE);
SET autotrace traceonly exp;
SELECT * FROM t1 WHERE n1 = 50;
ALTER SESSION SET optimizer_index_cost_adj = 50;
SELECT * FROM t1 WHERE n1 = 50;
-- Selectivity 的例子;
CREATE TABLE t2(ID, month_id) AS
SELECT ROWNUM, trunc(dbms_random.value(1, 13))
FROM dba_objects WHERE ROWNUM <= 1200;
EXEC dbms_stats.gather_table_stats(USER, 't2',
CASCADE => TRUE);
SET autotrace traceonly exp;
17. SELECT * FROM t2 WHERE month_id = 5;
SELECT COUNT(*) FROM t2 WHERE month_id = 5;
-- 10053 时间测试例子;
ALTER SYSTEM/SESSION SET EVENTS '10053 trace name
context forever, level 8';
SELECT * FROM employees WHERE employee_id = 100;
ALTER SYSTEM/SESSION SET EVENTS '10053 trace name
context off';
SELECT s.sid, p.spid FROM v$session s
INNER JOIN v$process p ON s.paddr = p.addr AND
s.sid = (SELECT sid FROM v$mystat WHERE ROWNUM
= 1);