• 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代码等都要重新修改

  • 相关阅读:
    10.9 第七次作业游戏
    10.23 第六次作业 刘惠惠 this关键字
    第五次作业 刘惠惠 自动生成的方法存根
    谷歌历史影像下载
    ArcGIS 基础13-整饰输出
    ArcGIS 基础12-保存文件并打包
    ArcGIS 基础11-专题制图
    ArcGIS 基础10-拓扑校验
    ArcGIS 基础9-属性查询和空间查询
    ArcGIS 基础8-坐标系转换
  • 原文地址:https://www.cnblogs.com/samuel-cai/p/3144237.html
Copyright © 2020-2023  润新知