Èç¹ûÄãÕýÔÚ¸ºÔðÒ»¸ö»ùÓÚSQL ServerµÄÏîÄ¿£¬»òÕßÄã¸Õ¸Õ½Ó´¥SQL Server£¬Äã¶¼ÓпÉÄÜÒªÃæÁÙһЩÊý¾Ý¿âÐÔÄܵÄÎÊÌ⣬ÕâÆªÎÄÕ»áΪÄãÌṩһЩÓÐÓõÄÖ¸µ¼£¨ÆäÖдó¶àÊýÒ²¿ÉÒÔÓÃÓÚÆäËüµÄDBMS£©¡£
ÔÚÕâÀÎÒ²»´òËã½éÉÜʹÓÃSQL ServerµÄÇÏÃÅ£¬Ò²²»ÄÜÌṩһ¸ö°üÖΰٲ¡µÄ·½°¸£¬ÎÒËù×öµÄÊÇ×ܽáһЩ¾Ñé----¹ØÓÚÈçºÎÐγÉÒ»¸öºÃµÄÉè¼Æ¡£ÕâЩ¾ÑéÀ´×ÔÎÒ¹ýÈ¥¼¸ÄêÖоÊܵĽÌѵ£¬Ò»Ö±À´£¬ÎÒ¿´µ½Ðí¶àͬÑùµÄÉè¼Æ´íÎó±»Ò»´ÎÓÖÒ»´ÎµÄÖØ¸´¡£
Ò»¡¢Á˽âÄãÓõŤ¾ß
²»ÒªÇáÊÓÕâÒ»µã£¬ÕâÊÇÎÒÔÚÕâÆªÎÄÕÂÖн²ÊöµÄ×î¹Ø¼üµÄÒ»Ìõ¡£Ò²ÐíÄãÒ²¿´µ½ÓкܶàµÄSQL Server³ÌÐòԱûÓÐÕÆÎÕÈ«²¿µÄT-SQLÃüÁîºÍSQL ServerÌṩµÄÄÇЩÓÐÓõŤ¾ß¡£
“ʲô£¿ÎÒÒªÀË·ÑÒ»¸öÔµÄʱ¼äÀ´Ñ§Ï°ÄÇЩÎÒÓÀÔ¶Ò²²»»áÓõ½µÄSQLÃüÁ£¿£¿”£¬ÄãÒ²Ðí»áÕâÑù˵¡£¶ÔµÄ£¬Äã²»ÐèÒªÕâÑù×ö¡£µ«ÊÇÄãÓ¦¸ÃÓÃÒ»¸öÖÜÄ©ä¯ÀÀËùÓеÄ
T-SQLÃüÁî¡£ÔÚÕâÀÄãµÄÈÎÎñÊÇÁ˽⣬½«À´£¬µ±ÄãÉè¼ÆÒ»¸ö²éѯʱ£¬Äã»á¼ÇÆðÀ´£º“¶ÔÁË£¬ÕâÀïÓÐÒ»¸öÃüÁî¿ÉÒÔÍêȫʵÏÖÎÒÐèÒªµÄ¹¦ÄÜ”£¬ÓÚÊÇ£¬µ½MSDN
²é¿´Õâ¸öÃüÁîµÄÈ·ÇÐÓï·¨¡£
¶þ¡¢²»ÒªÊ¹ÓÃÓαê
ÈÃÎÒÔÙÖØ¸´Ò»±é£º²»ÒªÊ¹ÓÃÓαꡣÈç¹ûÄãÏëÆÆ»µÕû¸öϵͳµÄÐÔÄܵϰ£¬ËüÃǵ¹ÊÇÄã×îÓÐЧµÄÊ×Ñ¡°ì·¨ ......
Use equality first.
ʹÓõÈÁ¬½Ó
Use range operators only where equality does not apply.
Ö»ÓÐÔÚµÈÁ¬½Ó²»¿ÉÓõÄÇé¿öÏÂÊÂÓÉÇø¼äÁ¬½Ó
Avoid use of negatives in the form of !=
or NOT.
±ÜÃâʹÓà £¡= »òÕß not
Avoid LIKE pattern matching.
±ÜÃâʹÓà LIKEÆ¥Åä
Try to retrieve specific rows and in small numbers.
³¢ÊÔ²éÕÒÌØÊâµÄÁкÍÔÚСµÄÊýÄ¿ÖÐ
Filter from large tables first to reduce rows joined.
Retrieve tables in order from the most highly filtered table downwards;
preferably the largest table has the most filtering applied.
¹ýÂË´ó±í¼õÉÙÁ¬½ÓµÄÐÐÊý£¬´Ó¹ýÂ˶àµÄ±íÏòϲéÕÒ£¬¾¡¿ÉÄܵĹýÂË´ó±í
Tip
The most highly filtered table is the table having the
smallest percentage of its rows retrieved, preferably the largest
table.
Use indexes wherever possible except for very small
tables.
³ý·ÇºÜСµÄ±í£¬ÎÞÂÛʲôÇé¿ö¶àÓÐË÷Òý
Let the Optimizer do its job.
ÈÃÓÅ»¯Æ÷×öÓÅ»¯
......
Use equality first.
ʹÓõÈÁ¬½Ó
Use range operators only where equality does not apply.
Ö»ÓÐÔÚµÈÁ¬½Ó²»¿ÉÓõÄÇé¿öÏÂÊÂÓÉÇø¼äÁ¬½Ó
Avoid use of negatives in the form of !=
or NOT.
±ÜÃâʹÓà £¡= »òÕß not
Avoid LIKE pattern matching.
±ÜÃâʹÓà LIKEÆ¥Åä
Try to retrieve specific rows and in small numbers.
³¢ÊÔ²éÕÒÌØÊâµÄÁкÍÔÚСµÄÊýÄ¿ÖÐ
Filter from large tables first to reduce rows joined.
Retrieve tables in order from the most highly filtered table downwards;
preferably the largest table has the most filtering applied.
¹ýÂË´ó±í¼õÉÙÁ¬½ÓµÄÐÐÊý£¬´Ó¹ýÂ˶àµÄ±íÏòϲéÕÒ£¬¾¡¿ÉÄܵĹýÂË´ó±í
Tip
The most highly filtered table is the table having the
smallest percentage of its rows retrieved, preferably the largest
table.
Use indexes wherever possible except for very small
tables.
³ý·ÇºÜСµÄ±í£¬ÎÞÂÛʲôÇé¿ö¶àÓÐË÷Òý
Let the Optimizer do its job.
ÈÃÓÅ»¯Æ÷×öÓÅ»¯
......
×òÌì¿´µ½ÍøÉÏÓÐÒ»¸ö¹ØÓÚSQL SERVER ¿Î¼þ£¬±ãËæÊÖÏÂÔØÁËÏÂÀ´¿´¿´Ö÷Òª½²ÁËЩʲôÄÚÈÝ£¬ÓÚÊÇ¿´µ½ÁËÏÂÃæÁ½¸öPPTÒ³Ãæ
ÓÉÓÚµÚÒ»ÕÅPPTÉϵÄÄÚÈݲ»Ì«×¼È·£¨ÈÕÖ¾ÎļþÖÐûÓГÈÕÖ¾Ò³”µÄ¸ÅÄֻÓÐVLFµÄ¸ÅÄ¿ÉÄÜÊÇÎÒÃǶԓÊý¾ÝÒ³”µÄ¸ÅÄîÌ«Éî¿ÌÁË£¬Òò´ËŪÁËÒÔ“ÈÕÖ¾Ò³”µÄ¸ÅÄî³öÀ´£¬¶øPPTÖÐ˵ÏȸüиßËÙ»º³åÇøÖеÄÊý¾ÝÒ³£¬È»ºó½«ÊÂÎñÈÕ־дÈëµ½“ÈÕÖ¾Ò³”£¬ºÜÈÝÒ×ÈÃÈËÀí½â³ÉÏȸü¸Ä¸ßËÙ»º³åÇø£¬È»ºó½«ÈÕ־дÈëµ½´ÅÅÌÉϵēÈÕÖ¾Ò³”£©,ÔÙ¼ÓÉÏÎÒ¿´PPTʱ±È½Ï"àñàð"(Ö»¿´µ½Ç°Ò»ÕÅPPT,ûÓÐÍùºó·Á½Ï¿´ºóÃæÒ»ÕÅPPT).Òò´ËÎÒ¾õµÃPPTµÄ×÷ÕßÔÚÈÕÖ¾µÄдÈë˳ÐòÉÏÓÐÎÊÌâ.Ë÷ÐÔ²éÁËÒ»ÏÂ×ÊÁÏ,È»ºó±È½ÏÉîÈëµÄ˼¿¼ÁËÈÕÖ¾µÄдÈë˳ÐòÎÊÌâ,ͬʱҲ¾ÀÕýÁËһЩ×Ô¼ºÒÔÍùµÄ²»ÕýÈ·Àí½â.
¸ÃÎÄÖ÷Òª°üº¬ÒÔÏÂÄÚÈÝ:
1.SQL SERRVER ÈÕÖ¾¹ÜÀíÆ÷µÄ´óÖ¹¤×÷ÄÚÈÝÓëÔÀí.
2.ʵÀý̽¾¿SQL SERVER ÊÂÎñÈÕÖ¾µÄ²úÉúÓëдÈë´ÅÅÌ´ÅÅÌ.
3.һЩÆäËüµÄÏà¹ØË¼¿¼.
µÚÒ»²¿·Ö:SQL SERVER ÈÕÖ¾¹ÜÀíÆ÷µÄ´óÖ¹¤ ......
´´½¨¹ÍÔ±±í£º
create table emp(deptno number(10),ename varchar2(100),sal number(10,2))£»
²åÈëÊý¾Ý
begin
insert into emp values('10','KING',5000);
insert into emp values('10','CLARK',2450);
insert into emp values('10','MILLER',1300);
insert into emp values('20','SCOTT',3000);
insert into emp values('20','FORD',3000);
insert into emp values('20','JONES',2975);
insert into emp values('20','ADAMS',1100);
insert into emp values('20','SMITH',800);
insert into emp values('30','BLAKE',2850);
insert into emp values('30','ALLEN',1600);
insert into emp values('30','TURNER',1500);
insert into emp values('30','WARD',1250);
insert into emp values('30','MARTIN',1250);
insert into emp values('30','JAMES',950);
commit;
end;
1¡¢Ê¹ÓÃrow_number()¡¢rank()¡¢dense_rank()²é³ö¸÷²¿ÃÅнˮ×î¸ßµÄÈý¸öÔ±¹¤ÐÕÃû¡¢Ð½Ë®£¬¶àÓÚÈý¸öµÄֻȡÈý¸ö¡£
select *
from (select e.deptno,
e.ename,
& ......
´´½¨¹ÍÔ±±í£º
create table emp(deptno number(10),ename varchar2(100),sal number(10,2))£»
²åÈëÊý¾Ý
begin
insert into emp values('10','KING',5000);
insert into emp values('10','CLARK',2450);
insert into emp values('10','MILLER',1300);
insert into emp values('20','SCOTT',3000);
insert into emp values('20','FORD',3000);
insert into emp values('20','JONES',2975);
insert into emp values('20','ADAMS',1100);
insert into emp values('20','SMITH',800);
insert into emp values('30','BLAKE',2850);
insert into emp values('30','ALLEN',1600);
insert into emp values('30','TURNER',1500);
insert into emp values('30','WARD',1250);
insert into emp values('30','MARTIN',1250);
insert into emp values('30','JAMES',950);
commit;
end;
1¡¢Ê¹ÓÃrow_number()¡¢rank()¡¢dense_rank()²é³ö¸÷²¿ÃÅнˮ×î¸ßµÄÈý¸öÔ±¹¤ÐÕÃû¡¢Ð½Ë®£¬¶àÓÚÈý¸öµÄֻȡÈý¸ö¡£
select *
from (select e.deptno,
e.ename,
& ......
µ±OracleÊý¾Ý¿â´´½¨Íê³Éºó£¬ÏµÍ³½«»á×Ô¶¯ÔËÐÐutlrp.sqlÕâ¸ö½Å±¾Îļþ£¨D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN£©£¬µ«ÊÇ£¬µ±Í¨¹ý¶¨Öư²×°ÀàÐ͵ķ½Ê½´´½¨ÁËÊý¾Ý¿âʱ£¬ÏµÍ³Ôò²»»áÔËÐÐutlrp.sqlÕâ¸ö½Å±¾£¬ËùÒÔ£¬½¨ÒéÔÚ´´½¨¡¢¸üлòÇ¨ÒÆÒ»¸öÊý¾Ý¿âºó£¬ÔËÐÐÒ»ÏÂutlrp.sqlÕâ¸ö½Å±¾£¬ÒÔÑéÖ¤Êý¾Ý¿â°²×°ÊÇ·ñ³É¹¦£¬ÕâÑù¿ÉÒÔÖØÐ±àÒëËùÓпÉÄÜ´¦ÓÚÎÞЧµÄPL/SQLÄ£¿é£¨°ü¡¢´æ´¢¹ý³Ì¡¢ÀàÐÍ¡¢º¯ÊýµÈµÈ£©£¬Õâ¸ö²½ÖèÊÇ¿ÉÑ¡µÄ£¬µ«ÊÇÍÆ¼ö¸Ã²½Öè¡£×¢Ò⣺ÔÚÔËÐиýű¾ÆÚ¼ä£¬Êý¾Ý¿âÖв»ÔÊÐíÓÐÆäËüµÄÊý¾Ý¿â¶¨ÒåÓïÑÔ£¨DDL£©ÔËÐв¢±£Ö¤STANDARDºÍDBMS_STANDARDÁ½¸ö°ü´¦ÓÚÓÐЧ״̬¡£
²½Ö裺
1£©Æô¶¯SQL*PLUS²¢ÒÔDBA½ÇÉ«µÄÕË»§Á¬½Óµ½Êý¾Ý¿â
SQL>sqlplus /nolog
SQL>conn lijing/lijing as sysdba
SQL>@D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\utlrp.sql ......
1.²éѯµÄÄ£ºýÆ¥Åä
¾¡Á¿±ÜÃâÔÚÒ»¸ö¸´ÔÓ²éѯÀïÃæÊ¹Óà LIKE '%parm1%'—— ºìÉ«±êʶλÖõİٷֺŻᵼÖÂÏà¹ØÁеÄË÷ÒýÎÞ·¨Ê¹Óã¬×îºÃ²»ÒªÓÃ.
½â¾ö°ì·¨:
ÆäʵֻÐèÒª¶Ô¸Ã½Å±¾ÂÔ×ö¸Ä½ø£¬²éѯËٶȱã»áÌá¸ß½ü°Ù±¶¡£¸Ä½ø·½·¨ÈçÏ£º
a¡¢ÐÞ¸Äǰ̨³ÌÐò——°Ñ²éѯÌõ¼þµÄ¹©Ó¦ÉÌÃû³ÆÒ»À¸ÓÉÔÀ´µÄÎı¾ÊäÈë¸ÄΪÏÂÀÁÐ±í£¬Óû§Ä£ºýÊäÈ빩ӦÉÌÃû³ÆÊ±£¬Ö±½ÓÔÚǰ̨¾Í°ï涨λµ½¾ßÌåµÄ¹©Ó¦ÉÌ£¬ÕâÑùÔÚµ÷Óúǫ́³ÌÐòʱ£¬ÕâÁоͿÉÒÔÖ±½ÓÓõÈÓÚÀ´¹ØÁªÁË¡£
b¡¢Ö±½ÓÐ޸ĺǫ́——¸ù¾ÝÊäÈëÌõ¼þ£¬ÏȲé³ö·ûºÏÌõ¼þµÄ¹©Ó¦ÉÌ£¬²¢°ÑÏà¹Ø¼Ç¼±£´æÔÚÒ»¸öÁÙʱ±íÀïÍ·£¬È»ºóÔÙÓÃÁÙʱ±íÈ¥×ö¸´ÔÓ¹ØÁª
2.Ë÷ÒýÎÊÌâ
ÔÚ×öÐÔÄܸú×Ù·ÖÎö¹ý³ÌÖУ¬¾³£·¢ÏÖÓв»ÉÙºǫ́³ÌÐòµÄÐÔÄÜÎÊÌâÊÇÒòΪȱÉÙºÏÊÊË÷ÒýÔì³ÉµÄ£¬ÓÐЩ±íÉõÖÁÒ»¸öË÷Òý¶¼Ã»ÓС£ÕâÖÖÇé¿öÍùÍù¶¼ÊÇÒòΪÔÚÉè¼Æ±íʱ£¬Ã»È¥¶¨ÒåË÷Òý£¬¶ø¿ª·¢³õÆÚ£¬ÓÉÓÚ±í¼Ç¼ºÜÉÙ£¬Ë÷Òý´´½¨Óë·ñ£¬¿ÉÄܶÔÐÔÄÜûɶӰÏ죬¿ª·¢ÈËÔ±Òò´ËҲδ¶à¼ÓÖØÊÓ¡£È»Ò»µ©³ÌÐò·¢²¼µ½Éú²ú»·¾³£¬Ëæ×Åʱ¼äµÄÍÆÒÆ£¬±í¼Ç¼ԽÀ´Ô½¶à
ÕâʱȱÉÙË÷Òý£¬¶ÔÐÔÄܵÄÓ°Ïì±ã»áÔ½À´Ô½´óÁË¡£
Õâ¸öÎÊÌâÐèÒªÊý¾Ý¿âÉè¼ÆÈËÔ±ºÍ¿ª·¢ÈËÔ±¹²Í¬¹Ø×¢
·¨Ôò£º²»ÒªÔÚ½¨Á¢µÄË÷ÒýµÄÊý¾ÝÁÐÉϽøÐÐÏÂÁвÙ×÷:
¡ô± ......