为什么select * from a的速度比select 具体字段from a快很多

解决方案 »

  1.   

    “select 具体字段”是select了所有字段还是部分?
      

  2.   

    为什么select * from a的速度比select 具体字段from a快很多--------------------------------------------------
    select * from a肯定是表扫描
    //create index it1c1 on a(c1);
    select c1 from a  会对索引it1c1进行全扫描我们可以知道a的一条记录的长度,会大于it1c1上的一条索引项的记录所占的空间(索引记录类似(c1的值,对应的主键))。索引,假设表有10000条记录,全表的存储可能需要100页,索引it1c1可能只需要10页。
    扫描10页的速度当然快于扫描100页的速度。
      

  3.   

    这是我的猜测。 当oracle用于从数据库块中分离特定字段的时间可能比网络传输字段的时间要来的长的时候,可能导致select * 比select col 来的慢。
      

  4.   

    分别用下面的语句看看:SET AUTOTRAC ON EXPLAIN
    SELECT * FROM ASET AUTOTRAC ON EXPLAIN
    SELECT SpecField FROM A我估计两者的优化选项有所不同