C_GDID和C_DW列在表中是否唯一的?唯一的建索引对执行性能上影响不大

解决方案 »

  1.   

    HASH JOIN 是不走索引的,数据量的不同会影响执行计划,大数据量的时候Hash JOIN的效率会更好。
      

  2.   

    数据量小的时候,全表扫描要比走索引快,具体原因简单讲就是索引存在2次i/o 问题
    这也是oracle 优化器作用的体现。
      

  3.   

    自然是条数, 索引建在A列上,查询B、C、D列和 查询B、C列跟索引A没关系。
      

  4.   

    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、所以走索引不一定块。
      

  5.   

    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次