Piemēram, tabulas dati var tikt glabāti vienā failu grupā (=klasterētais indeks), bet indeksu dati (=parastie indeksi)- citā failu grupā. Citā gadījumā- tabula var būt particionēta (dalīta) un tabulas dati var būt sadalīti pa daudzām failu grupām. Jau iepriekš esmu rakstījis par šo tēmu- Faili un failu grupas SQL Server un vēl citos rakstos.
Lai nu kā, vajadzības dzīts uzrakstīju (manuprāt) glītu vaicājumu, kas parāda tabulas, to indeksus un kurā vietā atrodas atbilstoši dati. vēl vairāk- cik rindu glabājas kurā failu grupā:
-- Tabulas, to indeksi, tā tips, atrašanās vieta un rindu skaits!Starp citu, priekš dalītajām (particionētajām) tabulām biju izveidojis šādu vaicājum- CV lai apskatītu dalītos (partitioned) objektus.
-- ja dalītā (partitioned) tabula, tad rāda attiecīgo sadalījumu pa failu grupām
-- un rindu skaitu tajās
Select sc.Name SchemaName, o.name TableName, i.name IndexName,
i.Type_Desc IndexType, d.type_desc RowsOrLOBOrSchema, d.name FileGroupOrSchemaName, dds.name FileGroupName, p.rows
From sys.indexes i
Left Join sys.data_spaces d On i.data_space_id = d.data_space_id
Left Join sys.all_objects o On i.object_id = o.object_id
Left Join sys.schemas sc On o.schema_id = sc.schema_id
Left Join sys.destination_data_spaces ds on d.data_space_id = ds.partition_scheme_id
Left Join sys.data_spaces dds On ds.data_space_id = dds.data_space_id
Left Join sys.partitions p on i.object_id = p.object_id and i.index_id = p.index_id
and Case When d.Type = 'PS' Then ds.destination_id Else 1 End = p.partition_number
Where
o.type = 'U' -- USER_TABLE
Order By sc.Name, o.Name, i.Type_Desc
Nav komentāru:
Ierakstīt komentāru