CDaoIndexInfo 結構
結構 CDaoIndexInfo
包含針對數據存取物件所定義的索引對象相關信息(DAO)。
注意
DAO 可透過 Office 2013 支援。 DAO 3.6 是最終版本,且被視為過時。
語法
struct CDaoIndexInfo {
CDaoIndexInfo(); // Constructor
CString m_strName; // Primary
CDaoIndexFieldInfo* m_pFieldInfos; // Primary
short m_nFields; // Primary
BOOL m_bPrimary; // Secondary
BOOL m_bUnique; // Secondary
BOOL m_bClustered; // Secondary
BOOL m_bIgnoreNulls; // Secondary
BOOL m_bRequired; // Secondary
BOOL m_bForeign; // Secondary
long m_lDistinctCount; // All
// Below the // Implementation comment:
// Destructor, not otherwise documented
};
參數
m_strName
唯一命名字段物件。 如需詳細資訊,請參閱 DAO 說明中的「名稱屬性」主題。
m_pFieldInfos
CDaoIndexFieldInfo 物件的陣列指標,指出哪些 tabledef 或 recordset 字段是索引中的索引鍵欄位。 每個物件都會識別索引中的一個字段。 預設索引順序為遞增。 索引物件可以有一或多個字段,代表每個記錄的索引鍵。 這些可以是遞增、遞減或組合。
m_nFields
儲存在中的 m_pFieldInfos
欄位數目。
m_bPrimary
如果 Primary 屬性為 TRUE,索引物件代表主要索引。 主要索引是由一或多個字段所組成,這些欄位會以預先定義的順序唯一識別數據表中的所有記錄。 因為索引欄位必須是唯一的,因此 Index 物件的 Unique 屬性也會在 DAO 中設定為 TRUE。 如果主索引包含多個字段,則每個欄位可以包含重複的值,但所有索引欄位的值組合都必須是唯一的。 主索引是由數據表的索引鍵所組成,通常包含與主鍵相同的字段。
當您設定數據表的主鍵時,主鍵會自動定義為數據表的主要索引。 如需詳細資訊,請參閱 DAO 說明中的「主要屬性」和「唯一屬性」主題。
注意
數據表上最多可以有一個主要索引。
m_bUnique
指出索引物件是否代表數據表的唯一索引。 如果此屬性為 TRUE,索引物件代表唯一的索引。 唯一索引包含一或多個字段,這些欄位會以唯一預先定義的順序,以邏輯方式排列數據表中的所有記錄。 如果索引是由一個字段所組成,則整個數據表中的值必須是唯一的。 如果索引包含多個字段,則每個欄位可以包含重複的值,但所有索引欄位的值組合都必須是唯一的。
如果索引物件的 Unique 和 Primary 屬性都設定為 TRUE,則索引是唯一且主要的屬性:它會以預先定義的邏輯順序,唯一識別數據表中的所有記錄。 如果 Primary 屬性設定為 FALSE,則索引是次要索引。 次要索引(索引鍵和非索引鍵)會以預先定義的順序來排列記錄,而不會做為數據表中記錄的標識符。
如需詳細資訊,請參閱 DAO 說明中的「主要屬性」和「唯一屬性」主題。
m_bClustered
指出索引物件是否代表數據表的叢集索引。 如果此屬性為TRUE,索引物件代表叢集索引;否則,則不會。 叢集索引是由一或多個非索引鍵欄位所組成,這些欄位會以預先定義的順序排列數據表中的所有記錄。 使用叢集索引時,數據表中的數據會以叢集索引所指定的順序來字面儲存。 叢集索引可讓您有效率地存取數據表中的記錄。 如需詳細資訊,請參閱 DAO 說明中的「叢集屬性」主題。
注意
使用 Microsoft Jet 資料庫引擎的資料庫會忽略 Clustered 屬性,因為 Jet 資料庫引擎不支援叢集索引。
m_bIgnoreNulls
指出其索引欄位中是否有 Null 值的記錄索引專案。 如果此屬性為TRUE,則具有 Null 值的欄位沒有索引專案。 若要更快速地使用欄位搜尋記錄,您可以定義欄位的索引。 如果您允許索引欄位中的 Null 專案,並預期許多專案為 Null,您可以將索引物件的 IgnoreNulls 屬性設定為 TRUE,以減少索引所使用的儲存空間量。 IgnoreNulls 屬性設定和 Required 屬性設定會一起判斷具有 Null 索引值的記錄是否有索引專案,如下表所示。
IgnoreNulls | 必要 | 索引欄位中的 Null |
---|---|---|
True | False | 允許 Null 值;未新增索引專案。 |
False | False | 允許 Null 值;已新增索引專案。 |
True 或 False | True | 不允許 Null 值;未新增索引專案。 |
如需詳細資訊,請參閱 DAO 說明中的
m_bRequired
指出 DAO 索引物件是否需要非 Null 值。 如果此屬性為TRUE,則索引對象不允許 Null 值。 如需詳細資訊,請參閱 DAO 說明中的主題。
提示
當您可以為 DAO 索引物件或 field 物件設定這個屬性時(由 tabledef、recordset 或 querydef 物件包含),請為欄位物件設定此屬性。 欄位物件的屬性設定有效性會在索引物件之前檢查。
m_bForeign
指出索引物件是否代表數據表中的外鍵。 如果此屬性為TRUE,索引代表數據表中的外鍵。 外鍵是由外部數據表中的一或多個字段所組成,可唯一識別主數據表中的數據列。 Microsoft Jet 資料庫引擎會建立外部數據表的索引物件,並在建立強制執行引用完整性的關聯性時設定 Foreign 屬性。 如需詳細資訊,請參閱 DAO 說明中的
m_lDistinctCount
指出關聯數據表中包含的索引物件唯一值數目。 檢查 DistinctCount 屬性,以判斷索引中唯一值或索引鍵的數目。 即使索引允許重複值,任何索引鍵只會計算一次,即使該值可能會有多個出現次數。 這項資訊適用於嘗試藉由評估索引資訊來優化數據存取的應用程式。 唯一值的數目也稱為索引物件的基數。 DistinctCount 屬性不一定會反映特定時間的實際索引鍵數目。 例如,異動回復所造成的變更不會立即反映在 DistinctCount 屬性中。 如需詳細資訊,請參閱 DAO 說明中的
備註
上述主要、次要和 All 的參考會指出 CDaoTableDef 和 CDaoRecordset 類別中成員函式傳回GetIndexInfo
資訊的方式。
索引物件不是由 MFC 類別表示。 相反地,CDaoTableDef 或 CDaoRecordset 類別之 MFC 對象的基礎 DAO 物件包含索引物件的集合,稱為 Indexes 集合。 這些類別提供成員函式來存取個別的索引信息專案,或者您可以藉由呼叫GetIndexInfo
包含對象的成員函式,以一次存取CDaoIndexInfo
它們。
CDaoIndexInfo
具有建構函式和解構函式,以便正確配置和解除分配 中的 m_pFieldInfos
索引字段資訊。
tabledef 對象的成員函式所 GetIndexInfo
擷取的信息會儲存在結構中 CDaoIndexInfo
。 GetIndexInfo
呼叫包含 tabledef 物件的成員函式,其 Indexes 集合中儲存了索引物件。 CDaoIndexInfo
也會在 Dump
偵錯組建中定義成員函式。 您可以使用 Dump
來傾印 物件的內容 CDaoIndexInfo
。
需求
標頭: afxdao.h