组合索引优化SQL续
昨天我说,用组合索引优化SQL,并不是最优的,这是因为在8亿的表上面有个等价的物化视图,这个物化视图可以代替我在之前在表上面建立的组合索引。
SQL> explain plan for SELECT distinct * from (select
2 (PROD_9005_GDF_WK_SS_FDIM.PROD_4_NAME),
3 PROD_9005_GDF_WK_SS_FDIM.PROD_5_NAME
4 from
5 GLOBL_DEMND_FRCST_WK_FCT,
6 PROD_9005_GDF_WK_SS_FDIM,
7 GDF_SRCE_REGN_LKP
8 WHERE
9 ( GDF_SRCE_REGN_LKP.SRCE_REGN_ID=GLOBL_DEMND_FRCST_WK_FCT.SRCE_REGN_ID )
10 AND ( GLOBL_DEMND_FRCST_WK_FCT.PROD_SKID=PROD_9005_GDF_WK_SS_FDIM.PROD_SKID )
11 AND
12 (GDF_SRCE_REGN_LKP.SRCE_REGN_ID IN ('AA','GC','NE')));
已解释。
已用时间: 00: 00: 00.90
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 900446578
-----------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 258K| 9582K| | 13588 (9)
相关文档:
1. select top pageSize
* from table where id not in(select top((pageNo-1)*pageSize
) id from table order by id asc)
2. select * from table where id<=pageSize*pageNo
and id>(pageNo-1)*pageSize
order by id asc
注:
pagesize每页显示的记录数
pageNo当前第几页
......
begin
for item in (select * from user_constraints a where a.constraint_type = 'R') loop
execute immediate 'alter table ' || item.table_name || ' disable constraint ' || item.constraint_name;
end loop;
end;
/ ......
POEAA中介绍了ORM中最重要的模式之一:Unit Of Work。看似简单,实现起来却非常复杂。
Hibernate完美的实现了这个模式。以下我用一系列的例子来分析Hibernate的处理机制
下面有三个例子,猜猜看Hibernate会执行几句SQL(省略事务处理代码,实体对象叫User,假设主键是自增型的)
例1:
User user = new User();
user.setN ......
SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的 ......