1) TimesTen 索引目前分两种:
Ø Hash 索引做等值匹配查询具有较大的优势,但占用空间较大;只能出现
在 primary key 上。
Ø T-tree 索引则适宜做范围、排序等查询(Order By,Group By,Distinct),当
然它也可做等值查询,占用空间较小。语法 create index test_idx on test(a,b);
2) 主键缺省具有 Hash 索引。
3) 建 Hash 索引时必须定义 Pages 值(Rows/256),以避免 Hash 冲突。
4) 全表扫描时候,如果被扫描的表具有 T-tree 索引(不管这个索引的列是否被
用到),则性能会有较大的提升。
5) 组合索引时,Hash 索引需要列的完全匹配,而 T-tree 索引只需要前置匹配。
如:
SELECT … FROM T1 WHERE COL1 = ? AND COL2 = ?
索引
Hash
T-Tree
Hash index: (COL1, COL2)
T-tree index: (COL1, COL2,
COL3)
是
可能会选择 Hash,如果
Hash 索引较快的话
是
Hash index: (COL1, COL2,
COL3)
T-tree index: (COL1, COL2)
否
是
Hash index: (COL1)
T-tree index: (COL3, COL1,
COL2)
是
否(不能前置匹配)
Hash index: (COL1, COL2,
COL3)
T-tree index: (COL3, COL1,
COL2)
否
否(会做全表扫描,但
由于有 T-tree 索引,所以
会比普通的全表扫描要
快)
6) 对下列语句
WHERE c1+10 < c2+20 写成 WHERE c1 < c2+10 在 C1 上创建索引
7) 如果表的空间无法预测,即不能定义 Pages 的值,或者索引的列中包含 大的
Char/Binary 以及组合列时,建议使用 unique index
用如下两个存储过程进行表的分析,以提高执行的效率
Ø ttOptUpdateStats (全表)
Ø ttOptEstimateStats (抽取部分)
9) 执行计划会一直使用,直到碰到下列情形: