CDaoIndexInfo 結構
結構 CDaoIndexInfo
包含針對資料存取物件所定義的索引物件相關資訊(DAO)。
語法
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
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: