mco_index_stat_get
接口适用于实时数据库 RT 。
此函数返回为索引维护的统计信息。
复合(多段)索引可由数据库运行时进行优化。通过 mcocfg.h
文件中的 MCO_MAX_INDEX_FIELD_SPEC
设置可优化索引的最大段(字段)数。默认值为 5。
如果索引中的字段数超过 MCO_MAX_INDEX_FIELD_SPEC
值,则通过索引的访问将不会被优化。(对于拥有 SmartEDB 源代码的用户,可以修改此值并重新构建库。将 MCO_MAX_INDEX_FIELD_SPEC
增加 1 会在索引头中增加 16 字节。默认设置会在索引头中增加 80 字节。)
应用程序可以通过调用 mco_index_stat_get()
来确定索引是否已优化,该函数会返回 mco_index_stat_t::type
的值 MCO_IDXST_FEATURE_OPTIMIZED
。
MCO_RET mco_index_stat_get(
/*IN*/ mco_trans_h t,
/*IN*/ uint2 index_number,
/*OUT*/ mco_index_stat_h stat
);
参数
t
mco_trans_h
由 mco_trans_start()
函数返回的 mco_trans_h
事务句柄。
index_number
uint2 *
一个 2 字节的无符号整数,表示所需统计信息的索引。通常,首先通过调用 mco_index_stat_num()
获取索引的总数,然后从 0 迭代到总数减 1。
stat
用于接收类统计信息的 mco_class_stat_t
结构的地址。
返回
MCO_S_OK
成功返回类统计信息。
MCO_E_INVALID_HANDLE
数据库句柄未打开。
MCO_E_INDEXLIMIT
无效的索引号。
示例
/* 应用程序代码片段 */
const char * dbname = "SimpleDb";
int main(int argc, char* argv[])
{
mco_db_h db;
MCO_RET rc;
mco_device_t dev;
mco_db_params_t db_params;
mco_trans_h t;
uint2 n_indexes;
mco_index_stat_t st;
int j;
...
rc = mco_db_open_dev( dbname, simple_get_dictionary(), &dev, 1, &db_params );
if ( MCO_S_OK != rc )
{
rc = mco_db_connect( dbname, &db );
...
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &t);
if ( MCO_S_OK == rc )
{
mco_index_stat_num( t, &n_indexes );
for ( j=0; j < n_indexes && MCO_S_OK == rc; j++ )
{
rc = mco_index_stat_get( t, j, &st );
if ( MCO_S_OK == rc )
{
printf( "%25s %4d key(s) %4d page(s)\n\t\t\t",
st.plabel, st.keys_num, st.pages_num );
}
}
...
}
}
...
}
文件
- 头文件:
mco.h
- 源文件:
mcodb.c
- 库:
libmcolib.a