组合索引的选择原则

简介: 表上的索引是根据什么建立的,特别是组合索引,有多个的时候优化器又怎么选择使用哪个呢, 今天做个试验验证下 新建这个表testindex 表结构 Name       Type          Nullable Default Comments --...

表上的索引是根据什么建立的,特别是组合索引,有多个的时候优化器又怎么选择使用哪个呢,
今天做个试验验证下
新建这个表testindex
表结构
Name       Type          Nullable Default Comments
---------- ------------- -------- ------- --------
CREATETIME DATE          Y                        
LOC        VARCHAR2(100) Y                        
STATUS     VARCHAR2(20)  Y                        
COL1       VARCHAR2(10)  Y                        

testindex上只有两个索引
right1 loc,createtime,status
right2 createtime,loc,status

收集表统计信息
BEGIN
   DBMS_STATS.GATHER_TABLE_STATS(ownname => 'TEST',
                                 tabname => 'TESTINDEX',
                                 estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
                                 method_opt => 'for all columns size skewonly',
                                 cascade=>TRUE
                                 );
END;
收集统计信息可参考
http://blog.csdn.net/robinson1988/article/details/5329522

根据条件取值范围不同执行sql
Select *
From testindex
Where CREATETIME = :1
And  loc > :3
And  status =:4
走createtime,loc,status索引

Select *
From testindex
Where CREATETIME > :1
And  loc = :3
And  status =:4
走loc,createtime,status索引

说明选择组合索引时根据查询条件判断,取值越精准,范围越小的字段createtime/loc放前面的索引越优先被选择
这里收集统计信息还是很必要的,上面这个选择索引的规则和直方图,是否有其他索引关系应该不大


目录
相关文章
|
20天前
|
存储 SQL 缓存
第八章,索引的创建与设计原则(3)
第八章,索引的创建与设计原则
9 0
|
20天前
|
Java 关系型数据库 MySQL
第八章,索引的创建与设计原则(4)
第八章,索引的创建与设计原则
16 0
|
20天前
|
存储 自然语言处理 关系型数据库
第八章,索引的创建与设计原则(1)
第八章,索引的创建与设计原则
15 0
|
10月前
|
存储 关系型数据库 MySQL
Mysql索引建立原则
索引建立原则。
47 0
|
1月前
|
SQL C++
组合两个表(C++)
组合两个表(C++)
23 0
|
8月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
c++ 如何做出实现一组数据的实际索引
|
SQL 存储 关系型数据库
第8章_索引的创建与设计原则(上)
第8章_索引的创建与设计原则
51 0
|
存储 SQL 关系型数据库
第8章_索引的创建与设计原则(下)
第8章_索引的创建与设计原则
119 0
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
C++是一种计算机高级程序设计语言, 由​​C语言​​​扩展升级而产生 , 最早于1979年由​​本贾尼·斯特劳斯特卢普​​在AT&T贝尔工
|
SQL 存储 关系型数据库
索引的创建与设计原则(1)
索引的创建与设计原则(1)
索引的创建与设计原则(1)