zoukankan      html  css  js  c++  java
  • 1.ORACLE 尽量不使用隐式转换

    /*************************************************
    一、主题:ORACLE 尽量不使用隐式转换

    类型转换的两种方式:显示类型转换(Explicit) 自动类型转换(Implicit)

    *************************************************/

    =============================================================================
    1.1.显示转换可读性更强;
        SELECT TO_DATE('1900-01-01','YYYY-MM-DD') FROM DUAL;--正确

    --对比
        SELECT TO_DATE(SYSDATE,'YYYYMMDD') FROM DUAL;--报错:无效的月份

        ALTER SESSION SET NLS_DATE_FORMAT='YYYYMONDD';

        SELECT TO_DATE(SYSDATE,'YYYYMMDD') FROM DUAL;--此时正确:2014-6-26

    --这个修改, 仅仅 修改本次登录的情况。不修改别的会话的。

    1.2.自动类型转换对性能产生不好的影响
    --
        CREATE TABLE TEST1
        (  
            ID   NUMBER(1) NOT NULL PRIMARY KEY,
            NAME VARCHAR(10)
        );
        CREATE unique INDEX IDX_TEST1 ON TEST1(NAME);
       
        INSERT INTO TEST1 VALUES(0,'0');
        INSERT INTO TEST1 VALUES(1,'1');
        INSERT INTO TEST1 VALUES(2,'2');
        INSERT INTO TEST1 VALUES(3,'A');
        INSERT INTO TEST1 VALUES(4,'B');
        INSERT INTO TEST1 VALUES(5,'a');  
        INSERT INTO TEST1(ID)  VALUES(7);           
    --   
        SELECT * FROM TEST1 WHERE NAME = 1;--
        /*  虽然会报错,但是执行计划可以查看
            执行计划:查看没有走索引,可能会误导人
            SELECT STATEMENT, GOAL = ALL_ROWS   2 1 20
                     TABLE ACCESS FULL SYS TEST1 2 1 20
        */
        SELECT * FROM TEST1 WHERE NAME = '1';             
        /*执行计划:走索引
        SELECT STATEMENT, GOAL = ALL_ROWS   0 1 20
        TABLE ACCESS BY INDEX ROWID SYS TEST1 0 1 20
             INDEX UNIQUE SCAN SYS IDX_TEST1 0 1 
        */
       
    1.3.自动转换依赖于上下文,一旦上下文改变,原来的程序可能就不能运行。
    1.4.ORACLE的版本(自动类型转换规则、算法、)变动也可能导致自动类型转换出现问题。
    1.5.自动类型转换与显示转换的时间差不多,最好的办法是避免转换,
        而且左值(column)最好不要进行类型转换,一般都是转换右值(Value)。

      日期为例:  TO_CHAR(DATECOL)='DATESTRING' ,  错误的写法,会导致索引失效;
     
      改为下面这样,才是符合预期的,
      DATECOL = TO_DATE(DATESTRING,'YYYY-MM-DD')
     
    ============================================================================= 

  • 相关阅读:
    JSON——JavaScript 对象表示法(JavaScript Object Notation)。
    jquery—— jQuery 是目前最流行的 JS 框架
    Bootstrap的css
    markdown编辑器与富文本编辑器优缺点比较--转载好文
    MATLAB绘图设置--中坐标显示间隔以及范围设置
    MATLAB绘图中参数导数的标注方法
    MATLAB 读取和写出Excel文件的方法-单个以及自动循环读写多个情况
    matlab 求和
    MATLAB画图中设置Marker过于密集怎么办-解决方法
    MPC特点原理以及各项参数的选择--引用别人的博客网址
  • 原文地址:https://www.cnblogs.com/zihuancc/p/3811911.html
Copyright © 2011-2022 走看看