count(1)count(*)count(col)の違いと性能を分析する

1685 ワード

count(1)とcount(*)には何の違いもなく(実行計画と統計)、すべての行count(col)統計col列が空ではない記録を統計し、インデックスがあればcolが空であるかどうかにかかわらずインデックスを移動でき、インデックスがなければテストを実行できません
          
         hr@ORCL> select count(1) from t;
          
          Execution Plan
          ----------------------------------------------------------
          Plan hash value: 2966233522
          
          -------------------------------------------------------------------
          | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
          -------------------------------------------------------------------
          |   0 | SELECT STATEMENT   |      |     1 |   159   (2)| 00:00:02 |
          |   1 |  SORT AGGREGATE    |      |     1 |            |          |
          |   2 |   TABLE ACCESS FULL| T    | 50356 |   159   (2)| 00:00:02 |
          -------------------------------------------------------------------
          
          hr@ORCL> select count(*) from t;
          
          Execution Plan
          ----------------------------------------------------------
          Plan hash value: 2966233522
          
          -------------------------------------------------------------------
          | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
          -------------------------------------------------------------------
          |   0 | SELECT STATEMENT   |      |     1 |   159   (2)| 00:00:02 |
          |   1 |  SORT AGGREGATE    |      |     1 |            |          |
          |   2 |   TABLE ACCESS FULL| T    | 50356 |   159   (2)| 00:00:02 |
          -------------------------------------------------------------------