为什么是全表扫描,索引没起作用,Oracle 11g 递归子句
发布网友
发布时间:2022-04-10 17:54
我来回答
共2个回答
懂视网
时间:2022-04-10 22:15
概念:为了加快查询速度而创建的一种结构,与表在物理上、逻辑上独立于表数据;
索引分类:B树索引(唯一 索引、组合索引、反向键索引、基于函数的索引)、位图索引;
创建索引:默认是USERS表空间;
分析索引:用于去除索引中的碎片;当索引中碎片较多时,可以重建索引;
唯一索引:建立索引的列上没有重复值;可以允许插入多个空值;
组合索引:在多个列上创建索引;
反向键索引:反转索引列键值的每个字节,通常应用在数值连续增长的列上;
位图索引:应用在低基数列上(某列上的值数量有限);
Oracle11G_索引
标签:组合索引 唯一索引 组合 去除 逻辑 允许 ora 反向 应用
热心网友
时间:2022-04-10 19:23
不知道你建立的是B树索引还是位图索引,照你所说的person表应该建立关于deptid的位图索引,因为单位的数量不会很多吧。
Oracle会自动在需要检索需要超过一定比例的行后进行全表扫描,而不是使用索引。
更新//确实我的是错的了。楼下说的多重循环才对,1k多×2万=一千多万次了。看语句能不能改改了。
更新2//
select deptid,deptname,count(*)
from person
group by deptid
order by deptid;
如果我没理解错你的意思,结果是要搞清楚单位的人数,那person表不是有deptid吗?不能以deptid分组吗?再者提个小问题,你的SQL语句好像缺个括号。