请教一个索引的问题:为什么建了索引的表查询还会全表扫描 C_GDID和C_DW列在表中是否唯一的?唯一的建索引对执行性能上影响不大 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HASH JOIN 是不走索引的,数据量的不同会影响执行计划,大数据量的时候Hash JOIN的效率会更好。 数据量小的时候,全表扫描要比走索引快,具体原因简单讲就是索引存在2次i/o 问题这也是oracle 优化器作用的体现。 自然是条数, 索引建在A列上,查询B、C、D列和 查询B、C列跟索引A没关系。 0、oracle读取磁盘数据的速度要不在内存里读取数据慢10000倍左右,因此越少的磁盘i/o 性能越好1、oracle读取数据最小单位是数据块2、每次读取的数据块个数是一定的3、每个数据库里放的数据也是一定的4、假设一次读取10个数据块,每个数据块里面10条数据,那么一次读取能读取 10*10=100条数据5、假设一个表里面有1W条记录,现在要查询里面的800条记录6、那么全表扫描只需要 读取100次即可把全表1W条数据读取完毕,并找到里面的800条数据7、如果走索引,需要读取8次将索引放入内存,然后对每一条记录得到rowid 上磁盘上取下一条数据 总共需要810次8、所以走索引不一定块。 Quote: 引用 8 楼 BenChiM888 的回复:0、oracle读取磁盘数据的速度要不在内存里读取数据慢10000倍左右,因此越少的磁盘i/o 性能越好1、oracle读取数据最小单位是数据块2、每次读取的数据块个数是一定的3、每个数据库里放的数据也是一定的4、假设一次读取10个数据块,每个数据块里面10条数据,那么一次读取能读取 10*10=100条数据5、假设一个表里面有1W条记录,现在要查询里面的800条记录6、那么全表扫描只需要 读取100次即可把全表1W条数据读取完毕,并找到里面的800条数据7、如果走索引,需要读取8次将索引放入内存,然后对每一条记录得到rowid 上磁盘上取下一条数据 总共需要810次8、所以走索引不一定块。第七条没看懂,为什么将索引放入内存是8次,取得rowid后,应该800次IO ,即使是将索引放入内存是8次,总共是800+8=808次 数组与动态SQL问题 请教,有防火墙的oracle服务器需要开放那些端口? oracle10中的enterprise manager Console跑那里去了? 高手进来看看,给个思路!!!!! oracle 中千位分隔符 请问一个oracle to_date的问题。 非高手勿入:全外连接 求sql 关于多人同时向数据库插入一条记录的问题 Oracle升级 oracle developer、forms 6i 和form builder什么关系? 求助!!!在insert into select from中使用decod和cast
这也是oracle 优化器作用的体现。
1、oracle读取数据最小单位是数据块
2、每次读取的数据块个数是一定的
3、每个数据库里放的数据也是一定的
4、假设一次读取10个数据块,每个数据块里面10条数据,那么一次读取能读取 10*10=100条数据
5、假设一个表里面有1W条记录,现在要查询里面的800条记录
6、那么全表扫描只需要 读取100次即可把全表1W条数据读取完毕,并找到里面的800条数据
7、如果走索引,需要读取8次将索引放入内存,然后对每一条记录得到rowid 上磁盘上取下一条数据 总共需要810次
8、所以走索引不一定块。