分享方式:


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 擷取的資訊會儲存在 結構中 CDaoIndexInfoGetIndexInfo呼叫包含 tabledef 物件的成員函式,其 Indexes 集合中儲存了索引物件。 CDaoIndexInfo 也會在 Dump 偵錯組建中定義成員函式。 您可以使用 Dump 來傾印 物件的內容 CDaoIndexInfo

需求

標頭: afxdao.h

另請參閱

結構、樣式、回呼和訊息對應
CDaoTableDef::GetIndexInfo