Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2371908
  • 博文数量: 473
  • 博客积分: 12252
  • 博客等级: 上将
  • 技术积分: 4307
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:02
文章分类

全部博文(473)

文章存档

2012年(8)

2011年(63)

2010年(73)

2009年(231)

2008年(98)

分类: Mysql/postgreSQL

2011-09-20 13:58:33

“回表”一般就是指执行计划里显示的“TABLE ACCESS BY INDEX ROWID”。
例如select的字段里有索引不包含的列,
SQL> select ename from emp  where empno =1;

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("EMPNO"=1)


再例如,虽然只查询索引里的列,但是需要回表过滤掉其他行。
SQL> select empno from emp  where empno =1 and ename='hao';

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ENAME"='hao')
   2 - access("EMPNO"=1)

“回表”一般就是指执行计划里显示的“TABLE ACCESS BY INDEX ROWID”。
例如select的字段里有索引不包含的列,
SQL> select ename from emp  where empno =1;

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("EMPNO"=1)


再例如,虽然只查询索引里的列,但是需要回表过滤掉其他行。
SQL> select empno from emp  where empno =1 and ename='hao';

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ENAME"='hao')
   2 - access("EMPNO"=1)

“回表”一般就是指执行计划里显示的“TABLE ACCESS BY INDEX ROWID”。
例如select的字段里有索引不包含的列,
SQL> select ename from emp  where empno =1;

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("EMPNO"=1)


再例如,虽然只查询索引里的列,但是需要回表过滤掉其他行。
SQL> select empno from emp  where empno =1 and ename='hao';

Execution Plan
----------------------------------------------------------
Plan hash value: 4066871323

----------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost  |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     8 |     1 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     8 |     1 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1 |
----------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ENAME"='hao')
   2 - access("EMPNO"=1)
阅读(1988) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~