中易网

什么时候使用组合索引

答案:2  悬赏:80  
解决时间 2021-03-21 19:58
什么时候使用组合索引
最佳答案
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。
在组合索引的使用方面,Oracle有以下特点:

1.当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引;
2.在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径(请见下面的测试1和测试2);
3.从Oracle9i起,Oracle引入了一种新的索引扫描方式——索引跳跃扫描(index skip scan),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当SQL语句的where子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引(请见下面的测试3);
4.Oracle优化器有时会做出错误的选择,因为它再“聪明”,也不如我们SQL语句编写人员更清楚表中数据的分布,在这种情况下,通过使用提示(hint),我们可以帮助Oracle优化器作出更好的选择。
全部回答
innodb按照主键进行聚集,如果没有定义主键,innodb会试着使用唯一的非空索引来代替。如果没有这种索引,innodb就会定义隐藏的主键然后在上面进行聚集。 所以,对于 聚集索引 来说,你创建主键的时候,自动就创建了主键的聚集索引。 而普通索引(非聚集索引)的语法,大多数数据库都是通用的: create index syntax create [unique|fulltext|spatial] index index_name [index_type] on tbl_name (index_col_name,...) [index_type] index_col_name: col_name [(length)] [asc | desc] index_type: using {btree | hash | rtree} [java] view plaincopy -- 创建无索引的表格 create table testnopk ( id int not null, name varchar(10) ); -- 创建普通索引 create index idx_testnopk_name on testnopk (name);
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
倒车入库如何看车已进库
非诚勿扰,王继章和李千默现在是否结婚
标准的运动前热身是做什么的?
网球肘的康复方法是什么???
“油条哥”的绝秘配方是什么?
小米3手机的进价是多少呢?
在太白县做什么生意好
6岁孩子可不可以每天睡前喝酸奶(自制的酸奶
电磁炉坏了,开关是好的,刚开始温度上去了没
收费黑坑钓鱼不咬钩怎么破解
人体电子称显示H1是什么意思
车站旅馆(遂宁射洪县)地址有知道的么?有点事
上海徕木电子股份有限公司 地址:上海市松江区
无味鸡爪我想知道这个在什么地方
华为荣耀8怎么截屏
推荐资讯
丰田Rav4自动档,经常加90号的汽油,对发动机
宝宝三个月的时候给买了个平安鑫盛12保险,前
GUCCI 包边角破损了起毛怎么办?求助
二分之一x减去七等于六分之九x减二怎么解
将一底面为2平方厘米的圆柱体铁棒,竖直插入
蟾蜍养殖新技术有哪些?
男生,油性皮肤,刚洗完脸就起皮,做完保湿就
乌鱼花怎么做?
怎样才能变成快手红人
上海松江区民益路的龙工怎么走?
想删除文件夹,但是总失败
清朝十二帝24克包金货多少钱
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?