Sql 性能介于<;和<;=哪一个是最好的接线员?为什么?

Sql 性能介于<;和<;=哪一个是最好的接线员?为什么?,sql,oracle,query-performance,Sql,Oracle,Query Performance,在以下查询中,哪个查询的性能更好?怎么做?请建议我 SELECT *FROM emp e WHERE e.hiredate<='02-JAN-1981'; SELECT *FROM emp e WHERE e.hiredate<'03-JAN-1981'; 从emp e中选择* 其中e.hiredate无差异。请参见“解释计划”。两者的成本相同 没有区别。请参见“解释计划”。两者的成本相同 没有区别。请参见“解释计划”。两

在以下查询中,哪个查询的性能更好?怎么做?请建议我

    SELECT *FROM emp e 
          WHERE e.hiredate<='02-JAN-1981';
     SELECT *FROM emp e 
         WHERE e.hiredate<'03-JAN-1981';
从emp e中选择*

其中e.hiredate无差异。请参见“解释计划”。两者的成本相同


没有区别。请参见“解释计划”。两者的成本相同


没有区别。请参见“解释计划”。两者的成本相同


没有区别。请参见“解释计划”。两者的成本相同

其中e.hiredate从emp e中选择*,其中e.hiredate 其中e.hiredate从emp e中选择*,其中e.hiredate 其中e.hiredate从emp e中选择*,其中e.hiredate
其中e.hiredate从emp e中选择*,其中e.hiredateThey没有在11g中生成错误。我不记得Oracle的情况,但对于Postgres,如果hiredate是时间戳,则这些查询不是等效的查询。对于时间戳,字符串化日期转换为午夜时间戳,因此您问题中的两个日期相隔23小时59米。也就是说,任何真正的差异都可以忽略不计。如果DB没有分解SQL并将操作符转换为它所能使用的最快的机器代码机制,那么它也可能依赖于您的数据;表的大小和与值完全匹配的值可以在索引表上运行。为什么要将日期与字符串进行比较?不是SQL,但类似的比感谢快,Lalit Kumar。实际上,我的一位高级团队成员说,如果我们使用WHERE e.hiredate <= TO_DATE('02-JAN-1981', 'DD-MON-YYYY')
WHERE e.hiredate <= DATE '1981-01-02'
SQL> SET AUTOTRACE ON EXPLAIN
SQL> SELECT * FROM emp e WHERE e.hiredate<= DATE '1981-01-02';
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-DEC-80        800
        20
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    37 |     4   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| EMP  |     1 |    37 |     4   (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("E"."HIREDATE"<=TO_DATE(' 1981-01-02 00:00:00',
              'syyyy-mm-dd hh24:mi:ss'))
SQL> SELECT * FROM emp e WHERE e.hiredate< DATE '1981-01-03';
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-DEC-80        800
        20
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    37 |     4   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| EMP  |     1 |    37 |     4   (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("E"."HIREDATE"<TO_DATE(' 1981-01-03 00:00:00',
              'syyyy-mm-dd hh24:mi:ss'))