Ссылочная целостность

Получение числа рефералов по всем таблицам в базе

	select
			-- число записей в таблице
			allsystables.nrows::bigint as records,

			-- число страниц, занятых таблицей
			allsystables.npused::bigint as pages,

			-- признак компрессии таблицы
    		case when (bitand(allsystables.flags, 512) = 512) then 'compressed' else ' ' end as compressed,

			-- имя схемы таблицы
    		rtrim(allsystables.owner) as owner,

			-- имя таблицы
    		allsystables.tabname,

			-- количество ссылок (внешних ключей) на таблицу
    		count(os.objtype) as referals

	FROM	systables as allsystables,
			outer (sysreferences rf, sysconstraints cpk, sysconstraints cfk, systables ft, sysobjstate os)

	WHERE		rf.ptabid = allsystables.tabid
			AND rf.primary = cpk.constrid
			AND rf.constrid = cfk.constrid
			AND cfk.tabid = ft.tabid
			AND rf.ptabid != ft.tabid
			AND os.objtype = 'C'
			AND os.owner = cfk.owner
			AND os.tabid = cfk.tabid
			AND os.name = cfk.constrname
	group by 1,2,3,4,5
	order by 1 desc;

В данном случае используется сортировка по количеству записей в таблице (поле выборки 1).

Перед выполнением запроса рекомендуется обновить статистику по всем таблицам или по тем таблицам, для которых есть вероятность устаревших данных по статистике.