在列的取值重复率很高的列上适合创建什么索引
2022-08-19阅读(467)
问:在oracle中,在列的取值重复率比较高的列上,适合创建什么索引
- 答:靠看是怎么应用这列数据。
索引并不是一定要建立,如果是一般查询用,那么可以考虑联合索引,增加辨识度。
如果是分组查询用,那么可以考虑位图索引。 - 答:可以尝试使用bitmap索引
问:有很多重复值的列适不适合建索引
- 答:一般不是很适合的
不过这个得看你的数据量
随着数据量的增加索引的使用效率可能会改变
写几种方式查询 看优化器的执行计划 会不会按索引来扫描
如果不按索引扫描 那就是 索引扫描的代价高于其他选择策略 - 答:这个并没有一个统一的概念,需要你按照经验来论断,有很多重复值的列不适合做索引的概率大一些,但也有很多情况,其实是需要做索引的。例如你经常需要单独对该列进行查询,例如查询人口表里所有女性。 查索引怎么着也比扫全表快吧。
- 答:恩,基本上说,是这样的.
毕竟索引上面,仅仅存储索引列的数据, 与 行的物理地址信息.
如果有很多重复值的列,建在索引上面.
那么当检索到这类数据的时候.
要获取很多的索引数据, 和很多的 行地址, 然后再 根据行地址,去检索行的信息.
问:数据库索引有哪几种,怎样建立索引
- 答:数据库表中的时间字段是否可以建立索引?可以建立索引的;至于建立聚集索引或者是非聚集索引,那要看你这个时间字段的具体情况以及使用或变更频繁程度。 一般来说,适合建立聚集索引的要求:“既不能绝大多数都相同,又不能只有极少数相同”的规则。 先说说一个误区:有人认为:只要建立索引就能显著提高查询速度。这个想法是很错误的。建立非聚集索引,确实,一般情况下可以提高速度,但是一般并不会达到你想要的速度。只有在适当的列建立适当的(聚集)索引,才能达到满意的效果。 下面的表总结了何时使用聚集索引或非聚集索引(很重要)。 动作描述 使用聚集索引 使用非聚集索引 列经常被分组排序 应 应 返回某范围内的数据 应 不应 一个或极少不同值 不应 不应 小数目的不同值 应 不应 大数目的不同值 不应 应 频繁更新的列 不应 应 外键列 应 应 主键列 应 应 频繁修改索引列 不应 应 别的就要看你的理解了。
问:为什么当列频繁更新的时候 不适合在该列建立簇集索引?
- 答:因为每次更新时,簇集索引重新索引所耗资源较多,所以索引列更新少,按该列排序查询多的表列才适合作簇集索引
比如教室排座位,一般是按大小个排,我们称作按身高进行簇集索引。
排好座位后,又来了一个新同学,那么几乎多半的同学可能都要动一下座位,才会重新排好,非常麻烦。
但是,如果某同学改了名子(姓名字段改变了),而我们没有按照姓名排座位(簇集索引),所以,当然就不用那么费事新排座(重建索引)了。
而非簇集索引,就好象来了新同学后,只是在花名册(可视为索引文件)中注明其身高,无需重新排列,只有当列队上体育课时(查询时),才会按花名册注明的身高进行排队(当然,实际不是这样的,但数据库索引是这样的)。
问:oracle中 在数值列上建索引好吗?
- 答:索引建不建跟你的应用环境有关
建索引不一定能提高你的查询数据,搞不好会拖慢你插入和更新数据.
【例如是一个 普通的 性别字段, 1男 0 女.
那么普通的 B-Tree 索引是不建议的, 但是可以建立一个 位图索引.】 --- 这个纯粹是乱讲
建位图索引只适合在数据仓库系统或者说是更新插入操作非常少的情况才会用到位图索引
位图索引会使你的DML事物完全串行化,这会使你的系统在并行操作上就是噩梦。
所以如果是插入和修改操作非常频繁的时候这种列最好不要建索引 - 答:好啊。索引重复的可能性越小,效率越高。
- 答:这个要看你的那个 数值列的 数值分布情况.
例如是一个 普通的 性别字段, 1男 0 女.
那么普通的 B-Tree 索引是不建议的, 但是可以建立一个 位图索引.
又例如是一个 商场的 销售流水号。
这种几乎没有重复的,而且检索的较为频繁的,可以创建索引。
假如是 这个数值的列, 通过一个 数据, 会检索到非常多的结果。
例如查询 全国 的人里面, 年龄是 25岁的 男性的 年收入 这种类型的查询。
可能就不建议 单独创建一个 年龄 的索引的。
可能是创建一个 组合索引。 - 答:典型的无限分类,如果栏目实在太多,要避免一次读取所有栏目。每次只读需要的。字段多到还没见什么影响。记录多才影响速度,做好索引
当创建sybase表时不带索引,则使用堆结构存储表。可以为表创建一个聚簇索引和多个非聚簇索引。当为表创建聚簇索引时,表中数据以索引中键的顺序进行物理存储。对非聚簇索引,sybase只支持b-树结构。对每个索引,可指定填充因子和每页必须存储的行数,可以将单个的表和索引分布到不同的物理设备中去———实际上,可以将非聚簇表的索引页放在与其数据独立的物理设备上。也可以划分表,为表创建多个“页链”。划分会减少对表的最后一页的访问,并允许对大型表操作时用并行i/o。
在列的取值重复率很高的列上适合创建什么索引
下载Doc文档