共用方式為


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 的參考會指出 CDaoTableDefCDaoRecordset 類別中成員函式傳回GetIndexInfo資訊的方式。

索引物件不是由 MFC 類別表示。 相反地,CDaoTableDefCDaoRecordset 類別之 MFC 對象的基礎 DAO 物件包含索引物件的集合,稱為 Indexes 集合。 這些類別提供成員函式來存取個別的索引信息專案,或者您可以藉由呼叫GetIndexInfo包含對象的成員函式,以一次存取CDaoIndexInfo它們。

CDaoIndexInfo 具有建構函式和解構函式,以便正確配置和解除分配 中的 m_pFieldInfos索引字段資訊。

tabledef 對象的成員函式所 GetIndexInfo 擷取的信息會儲存在結構中 CDaoIndexInfoGetIndexInfo呼叫包含 tabledef 物件的成員函式,其 Indexes 集合中儲存了索引物件。 CDaoIndexInfo 也會在 Dump 偵錯組建中定義成員函式。 您可以使用 Dump 來傾印 物件的內容 CDaoIndexInfo

需求

標頭: afxdao.h

另請參閱

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