public class BucketedIndex extends Object
用于优化 SQL Server 的 schema 对象查找,将 O(N) 全表扫描优化为 O(1) + O(bucket_size)。
核心思想:
性能特性:
使用示例:
CollatorProvider provider = new CollatorProvider();
BucketedIndex index = new BucketedIndex(provider, "SQL_Latin1_General_CP1_CI_AS");
// 添加对象
index.put("MyTable", tableObject);
index.put("MYTABLE", tableObject2); // 同一桶(mytable_7)
// 查找对象(使用 Collator 比较)
TSQLSchemaObject found = index.get("myTable"); // CI: 能找到
| Constructor and Description |
|---|
BucketedIndex(CollatorProvider collatorProvider,
String collationName,
ESQLDataObjectType objectType)
构造分桶索引
|
| Modifier and Type | Method and Description |
|---|---|
TSQLSchemaObject |
get(String name)
查找对象(先定位桶,再 Collator 比较)
|
List<TSQLSchemaObject> |
getAllObjects()
获取所有对象(用于遍历)
|
int |
getBucketCount()
获取桶数量(用于调试)
|
String |
getBucketStats()
获取桶统计信息(用于性能分析)
|
int |
getObjectCount()
获取对象数量
|
void |
put(String name,
TSQLSchemaObject object)
添加对象到桶
|
boolean |
remove(String name,
TSQLSchemaObject object)
移除对象
|
public BucketedIndex(CollatorProvider collatorProvider, String collationName, ESQLDataObjectType objectType)
collatorProvider - Collator 提供者(ThreadLocal 缓存)collationName - SQL Server collation 名称objectType - 对象类型(用于日志)public void put(String name, TSQLSchemaObject object)
name - 对象名称object - schema 对象public TSQLSchemaObject get(String name)
name - 对象名称public boolean remove(String name, TSQLSchemaObject object)
name - 对象名称object - 要移除的对象public List<TSQLSchemaObject> getAllObjects()
public int getBucketCount()
public int getObjectCount()
public String getBucketStats()