boost multi index 多索引容器

2022-06-19 12:21:16 字數 1060 閱讀 3102

#include "

stdafx.h

"#include

#include

#include

#include

#include

using

namespace

std;

using

namespace boost;

/*

定義乙個mutistruct

key : 1. objectid

2. strname

value: 物件指標stnodeptr

*/struct

mutistruct;/*

定義容器,索引

*/using muticontainer = boost::multi_index::multi_index_container boost::multi_index::indexed_by

int, &mutistruct::objectid>>,

boost::multi_index::ordered_unique

string, &mutistruct::strname>>

>

>;

/*有多少個key,就定義多少個列舉,

0:表示以第乙個索引作為key。

1:表示以第二個索引作為key。

*/enum

;using mi_obj_idx = muticontainer::nth_index::type;

using mi_name_idx = muticontainer::nth_index::type;

/*

插入資料到容器

*/muticontainer conter;

mutistruct mi;

mi.objectid = 11

;mi.strname = "

nihao";

std::pair

bool> p =conter.insert(mi);

if (!p.second)

聯合索引(多列索引)

聯合索引是指對錶上的多個列進行索引,聯合索引也是一棵b 樹,不同的是聯合索引的鍵值數量不是1,而是大於等於2.最左匹配原則 假定上圖聯合索引的為 a,b 聯合索引也是一棵b 樹,不同的是b 樹在對索引a排序的基礎上,對索引b排序。所以資料按照 1,1 1,2 順序排放。對於selete from t...

mysql多列索引 MySQL的多列索引

什麼是索引?索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄...

BerkeleyDB 多索引查詢

由於效能原因,我們打算將關係型資料庫轉移到記憶體資料庫中 在記憶體資料庫產品的選型中,我們確定的候選物件有redis和berkeley db redis查詢效率不錯,並且支援豐富的資料儲存結構,但不支援多索引,這樣對於比較複雜的sql移植可能會造成資料膨脹 berkeley db只支援簡單的key ...