oracleÌøÔ¾Ë÷ÒýµÄÓ¦Óó¡ºÏ
Ë÷ÒýÌøÔ¾Ê½É¨Ãè(index skip scan)ÊÇOracle9iµÄÒ»¸öеÄÖ´ÐÐÌØÐÔ£¬ÓÈÆäÊÊÓÃÓÚʹÓÃÁ¬½ÓË÷ÒýºÍ·ÃÎʶàÖµË÷ÒýµÄOracle²éѯ¡£
Ë÷ÒýÌøÔ¾Ê½É¨Ãè(index skip scan)ÊÇOracle9iµÄÒ»¸öеÄÖ´ÐÐÌØÐÔ£¬ÓÈÆäÊÊÓÃÓÚʹÓÃÁ¬½ÓË÷ÒýºÍ·ÃÎʶàÖµË÷ÒýµÄOracle²éѯ¡£ÈÃÎÒÃÇ¿´ÒÔϵķ¶Àý¡£Çë×¢Òâµ½ÒÔÏ´úÂë°üº¬×ÅÁ¬½ÓË÷Òý£º
create indexsex_emp_idonemp (sex, emp_id);
ÔÚOracle9i°æ±¾Ö®Ç°£¬µ±SQL²éѯÖаüº¬ÐÔ±ðºÍemp_idʱ£¬»òÕß²éѯָ¶¨ÐÔ±ðÐеÄʱºò²Å¿ÉÒÔʹÓÃÕâÒ»Ë÷Òý¡£ÏÂÃæµÄ²éѯ²»Äܹ»Ê¹ÓÃÁ¬½ÓË÷Òý£º
selectemp_idfromempwhereemp_id = 123;
Oracle9iµÄË÷ÒýÌøÔ¾Ê½É¨ÃèÖ´ÐйæÔòÔÊÐíʹÓÃÁ¬½ÓË÷Òý£¬¼´Ê¹SQL²éѯÖв»Ö¸¶¨ÐԱ𡣠ÕâÒ»ÌØÐÔʹµÃÎÞÐèÔÚemp_idÐÐÖÐÌṩµÚ¶þ¸öË÷Òý¡£Oracle³ÐÈÏË÷ÒýÌøÔ¾Ê½É¨ÃèûÓÐÖ±½ÓË÷Òý²éѯËٶȿ죬µ«¿ÉÒÔÕâÑù˵£¬Ïà±ÈÓÚÕû¸ö±íɨÃè (table scan)£¬Ë÷ÒýÌøÔ¾Ê½É¨ÃèµÄËÙ¶ÈÒª¿ìµÃ¶à¡£
µ±OracleûÓÐÖ¸Ã÷Ë÷ÒýÌøÔ¾Ê½É¨ÃèµÄÄÚ²¿ÄÚÈÝʱ£¬ÎÒÃÇ¿ÉÒÔ´ÓËüµÄÖ´ÐйæÔòÖÐÅжϳö£¬OracleÔÚÄÚ²¿ÉÏÉú³ÉÁ˶à¸ö²éѯ£¬ÕâÑù¾ÍÂú×ã´øÓжà¸ö×Ó²éѯµÄ²éѯ:
SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=1 Bytes=5)0 SORT (AGGREGATE)1 INDEX (SKIP SCAN) OF 'SEX_EMP_ID' (NON-UNIQUE)
ÔÚÄÚ²¿ÀOracleÉú³ÉÁËÁ½¸ö²éѯ£¬²¢Á¬½Ó½á¹ûµÄROWID±í¡£
selectemp_name from emp_where sex = 'F' and emp_id = 123
UNION
select emp_name from emp_where sex = 'M' and emp_id = 123;
ʹÓÃË÷ÒýÌøÔ¾Ê½É¨ÃèµÄÄÚº¾Í±äµÃºÜÇåÎú¡£
¶ÔÓÚ¸ß˳Ðò¼ü(high order key)ÖеĶÀÌØÖµÊýÄ¿£¬OracleµÄË÷ÒýÌøÔ¾Ê½É¨ÃèÐÔÄܽ«»á½µµÍ¡£Èç¹ûÖ÷ÁÐÓÐ50¸öÖµ£¬OracleÒª·¢³ö50Ìõ²éѯ²ÅÄÜÕһؽá¹û¡£ Ë÷ÒýÌøÔ¾Ê½É¨ÃèÖ»ÊÊÓÃÓÚÓ²Å̿ռäºÍ´æ´¢¿Õ¼äÏ൱½ôȱµÄÇé¿ö¡££¨ÔðÈαà¼:ÍõÈð£©
ÆÀÊö£º
¸ù¾ÝÉÏÃæÎÄÕÂÖеĽá¹û£¬Êµ¼ÊÉÏ£¬ÌøÔ¾Ë÷ÒýµÄÓ¦Óó¡ËùÊÇÓÐÏ޵ģ¬Èç¹ûË÷ÒýµÄµÚÒ»¸ö×ֶΣ¨Ö÷ÁУ©µÄÊý¾ÝÖÖÀàºÜ¶àµÄ»°£¬ÌøÔ¾Ë÷Òý¶ÔÌá¸ßÐÔÄÜÊǺÜÓÐÏ޵ģ¬ÉõÖÁÊÇûÓÐÓô¦µÄ£¬ÒòΪʵ¼ÊÉÏoracleÄÚ²¿ÊÇÉú³ÉÁ˶à¸ö²éѯÀ´Íê³ÉÕâÏ×÷µÄ¡£
ËùÒÔÔÚʵ¼ÊÓ¦Óùý³ÌÖУ¬ÕýÈ·µÄÀí½âÌøÔ¾Ë÷ÒýµÄÔÀí£¬·ÖÎöÖ÷ÁÐÊý¾ÝµÄÇé¿ö£¬ÊÇÓúÃÌøÔ¾Ë÷ÒýµÄÒ»¸öǰÌá
±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£ºhttp://blog.csdn.net/towerjt/archi
Ïà¹ØÎĵµ£º
extent--×îС¿Õ¼ä·ÖÅ䵥λ --tablespace management
block --×îСi/oµ¥Î» --segment management
create tablespace james
datafile '/export/home/oracle/oradata/james.dbf'
size 100M ¡¡¡¡¡¡¡¡¡¡¡¡--³õʼµÄÎļþ´óС¡¡
autoextend On¡¡¡¡¡¡¡¡ --×Ô¶¯Ôö³¤
next 10M¡ ......
CREATE TABLE salaryByMonth
(
employeeNo varchar2(20),
yearMonth varchar2(6),
salary number
) ;
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200805', 500);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200802', 150);
in ......
ORACLEÖÐÊý¾Ý×ÖµäÊÓͼ·ÖΪ3´óÀà, ÓÃÇ°×ºÇø±ð£¬·Ö±ðΪ£ºUSER£¬ALL ºÍ DBA£¬Ðí¶àÊý¾Ý×ÖµäÊÓͼ°üº¬ÏàËÆµÄÐÅÏ¢¡£
USER_*:ÓйØÓû§ËùÓµÓеĶÔÏóÐÅÏ¢£¬¼´Óû§×Ô¼º´´½¨µÄ¶ÔÏóÐÅÏ¢
ALL_*£ºÓйØÓû§¿ÉÒÔ·ÃÎʵĶÔÏóµÄÐÅÏ¢£¬¼´Óû§×Ô¼º´´½¨µÄ¶ÔÏóµÄÐÅÏ¢¼ÓÉÏÆäËûÓû§´´½¨µÄ¶ÔÏ󵫸ÃÓû§ÓÐȨ·ÃÎʵÄÐÅÏ¢
DBA_* ......
/*sum()over()*/
--ĬÈϼÆËãËùÓÐÐеĺϼÆ
select t.empno,t.ename,t.sal,t.deptno,sum(t.sal)over()
from scott.emp t;
--partition by·Ö×éºÏ¼Æ
select t.empno,t.ename,t.sal,t.deptno,
sum(t.sal)over(partition by t.deptno)
from scott.emp t
order by t.deptno,t.sal;
......
alter table t_att_over_haul_safe_pres add c clob;
update t_att_over_haul_safe_pres set c=prt_precautions;
alter table t_att_over_haul_safe_p ......