zoukankan      html  css  js  c++  java
  • select * 与 性能

    select * 对性能的影响;
       
    如果select 需要的字段都是被索引的,而且where子句也可从索引获得。那么查询就只需扫描索引即可。因此select *需要关联未被索引的字段,效率就差了。
    使用*, 在解析的过程中会将* 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。


    如果需要取所有的列,那么SELECT *和SELECT COL1, COL2 *……之间没有性能差别。

    但是如果有不需要的列,那么SELECT *就会将更多的数据从服务器传递到客户端,不要小看这些多余的数据传递,它们占用了大量了网络带宽。
    如果说IO速度是瓶颈,那么Oracle还提供了缓存,来检查物理IO的数量,而网络传播的可没有办法来减少数据的传送量。
    同样是全表扫描的执行计划,百万级的数据量,一个SELECT COUNT(*) FROM TABLE可能在秒级完成,而如果是SELECT * FROM TABLE呢,自己试试在SQLPLUS上执行,看看你需要等待多长时间。当然,这还包括输出时间,那么你可以使用SET AUTOT TRACE,然后看看等待时间。
    更何况,SELECT *的情况,一旦表增加了新的字段,那么使用了SELECT *的程序、PL/SQL代码等都要重新修改

  • 相关阅读:
    后缀数组详解
    快速傅里叶变换详解(FFT)
    算法学习————SG函数和SG定理
    noi.ac七一模拟赛
    算法学习————高斯消元
    算法学习————Lucas定理
    算法学习————Kruskal重构树
    算法学习————FWT
    20210629模拟
    复习笔记之背包
  • 原文地址:https://www.cnblogs.com/samuel-cai/p/3144237.html
Copyright © 2011-2022 走看看