|
Archives of the TeradataForumMessage Posted: Fri, 24 Mar 2006 @ 20:39:10 GMT
<-- Anonymously Posted: Friday, March 24, 2006 15:45 --> Andrea's question...
Answer... Here is an example of what we used to refresh table using 10% change within a week as guide. .os cat /dev/null > $OUT/idw_collect_stats_daily.btq .export file $OUT/idw_collect_stats_daily.btq sel distinct 'collect stats on '|| trim(a.databasename)||'.'||trim(a.tablename)||' ;' (title '') from (select logdate, databasename, tablename, sum(currentperm) tablesize from shadow.tablesize group by 1,2,3) a join (select date as logdate, databasename, tablename, sum(currentperm) tablesize from dbc.tablesize group by 1,2,3) b on a.databasename=b.databasename and a.tablename=b.tablename and a.logdate+1=b.logdate where exists (select 1 from test1.idw_production_tables where databasename=a.databasename and tablename=a.tablename) and b.logdate=date and (b.tablesize-a.tablesize)/b.tablesize > 0.0142 order by a.databasename, a.tablename ; .if errorcode <> 0 then .exit errorcode .export reset .run file=$OUT/idw_collect_stats_daily.btq Here is an example what we do to collect stats on primary index when a table is brand new to the warehouse and stats was not defined. .os cat /dev/null> $OUT/idw_collect_stats_new.btq .export file $OUT/idw_collect_stats_new.btq sel (case when a.columnposition=b.min_column and a.columnposition<>b.max_column then 'collect stats on '||trim(a.databasename)|| '.'||trim(a.tablename)|| ' column ('||trim(a.columnname) when a.columnposition=b.min_column and a.columnposition=b.max_column then 'collect stats on '||trim(a.databasename)|| '.'||trim(a.tablename)|| ' column ('||trim(a.columnname)||' ) ;' when a.columnposition=b.max_column and a.columnposition<>b.min_column then ' , '||trim(a.columnname)||' ) ;' else ' ,'||trim(a.columnname) end) (title '') from dbc.indices a join (select databasename, tablename, min(columnposition) as min_column, max(columnposition) as max_column from dbc.indices I where indextype in ('p','q') group by 1,2) b on a.databasename=b.databasename and a.tablename=b.tablename where a.indextype in ('p','q') and exists (select 1 from test1.idw_production_tables where databasename=a.databasename and tablename=a.tablename) and exists (select 1 from dbc.tables where createtimestamp > current_timestamp - interval '3' day and databasename=a.databasename and tablename=a.tablename) order by a.databasename, a.tablename, a.columnposition ; .if errorcode <> 0 then .exit errorcode sel 'collect stats on '||trim(a.databasename)|| '.'||trim(a.tablename)|| ' column ('||trim(a.columnname)||' ) ;' (title '') from dbc.indices a where a.indextype in ('p','q') and exists (select 1 from test1.idw_production_tables where databasename=a.databasename and tablename=a.tablename) and (databasename, tablename) in (select databasename, tablename from dbc.tables where createtimestamp > current_timestamp - interval '3' day) order by a.databasename, a.tablename, a.columnposition ; .if errorcode <> 0 then .exit errorcode .export reset .run file=$OUT/idw_collect_stats_new.btq There are other write up in the past from some very smart people on how to look at stats information with the system and determine when was the last time the stats was collected then react to it. You should be able to find them in the archive area of this forum. Best wish.
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | |||||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | |||||||||||||||||||||||||||||||||||||||||||||||||||