Oracle 10g SQL ÓÅ»¯ÔÙѧϰ
´Ó8iµ½10g£¬Oracle²»¶Ï½ø»¯×Ô¼ºµÄSQL TuningÖÇÄÜ£¬Ò»Ð©Ãؼ®¼¶µÄÓÅ»¯¿Ú¾÷ÒѾʧЧ¡£
µ«ÎÒϲ»¶Ê§Ð§£¬²»Óüǿھ÷£¬²Ù¸öToad for Oracle Xpert
£¬°´ÕÕ´ó·½ÏòÊæÊæ·þ·þµÄ
µ÷ÓŲÅÊǰ®×öµÄÊÂÇé¡£
1.Excution Plan
Excution
PlanÊÇ×î»ù±¾µÄµ÷ÓŸÅÄ²»¹ÜÄãµÄµ÷ÓÅ´µµÃÈçºÎÌ컨ÂҶ飬½á¹û»¹ÊÇÒªÓÉExcution planÀ´ÏÔʾOracle
×îÖÕÓÃʲôË÷Òý¡¢°´Ê²Ã´Ë³ÐòÁ¬½Ó¸÷±í£¬Full Table Scan»¹ÊÇAccess by Rowid
Index£¬Æ¿¾±ÔÚʲôµØ·½¡£Èç¹ûûÓÐËüµÄÖ¸µ¼£¬Ò»Çе÷ÓŶ¼ÊÇÃɵġ£
2.Toad for Oracle
Xpert
ÓÃËüÀ´µ÷ÓÅÔÚÕæµÄºÃÊæ·þ¡£Quest
ÍÌ
²¢ÁËLeccoºó£¬½«ËüÕûºÏµ½ÁËToad µÄSQL
TunningÀïÃæ£º×îÇåÎúµÄÖ´Ðмƻ®ÏÔʾ£¬×Ô¶¯Éú³ÉNÌõµÈ¼ÛSQL¡¢¸ø³öÓÅ»¯½¨Ò飬²»Í¬SQLÖ´Ðмƻ®µÄ¶Ô±È£¬»¹ÓÐʵ¼ÊÖ´ÐеÄÂß¼¶Á¡¢ÎïÀí¶ÁÊý¾ÝµÈµÈÒ»
Ä¿ÁËÈ»¡£
3.Ë÷Òý
´ó²¿·ÖµÄÐÔÄÜÎÊÌâÆäʵ¶¼ÊÇË÷ÒýÓ¦ÓõÄÎÊÌ⣬Where×Ӿ䡢
Order By¡¢Group By ¶¼ÒªÓõ½Ë÷Òý¡£
Ò»°ã¿ª·¢ÈËÔ±ÈÏΪ½«Ë÷Òý½¨È«Á˾ͿÉÒÔÏ塈ȯ¼ÒÁË£¬ÊµÔò»¹ÓÐÆÄ¶àµÄ˼Á¿ºÍÏÝÚå¡£
3.1
Ë÷ÒýÁÐÉϲ»Òª½øÐмÆËã
ÕâÊÇ×î×îÆÕ±éµÄʧЧÏÝÚ壬±ÈÈçwhere
trunc(order_date)=trunc(sysdate),
i+2>4¡£Ë÷ÒýʧЧµÄÔÒòÒ²¼òµ¥£¬Ë÷ÒýÊÇÕë¶ÔÔÖµ½¨µÄ¶þ²æÊ÷£¬Ä㽫ÁÐÖµ*3/4+2ÕÛÌÚÒ»·¬ºó£¬ÔÀ´µÄ¶þ²æÊ÷µ±È»¾ÍÓò»ÉÏÁË¡£½â¾öµÄ·½·¨:
¡¡
1.¡¡»»³ÉµÈ¼ÛÓï·¨£¬±ÈÈçtrunc(order_date) »»³É
where order_date
>
trunc(sysdate)
-
1
and
order_date
<
trunc(sysdate)
+
1
¡¡ 2. ÌØ±ðΪ¼ÆË㽨Á¢º¯ÊýË÷Òý
create
index
£É_XXXX
on
shop_order(trunc(order_date))
3. ½«¼ÆËã´ÓµÈºÅ×ó±ßÒÆµ½ÓÒ±ß
¡¡ÕâÊÇÕë¶ÔijЩÎÞÐÄ֮ʧµÄ¾ÀÕý£¬°Ña*2>4¡¡¸ÄΪa>4/2£»°Ñ
TO_CHAR(zip) = '94002' ¸ÄΪzip = TO_NUMBER('94002');
3.2
CBOÓëË÷ÒýÑ¡ÔñÐÔ
½¨ÁËË÷ÒýÒ²²»Ò»¶¨»á±»OracleÓõ쬾ÍÏñ¸öÌôʳµÄº¢×Ó¡£»ùÓڳɱ¾µÄÓÅ»¯Æ÷(CBO,
Cost-Based Optimizer)£¬»áÏÈ¿´¿´±íµÄ´óС£¬»¹ÓÐË÷ÒýµÄÖØ¸´¶È£¬ÔÙ¾ö¶¨Óû¹ÊDz»ÓᣱíÖÐÓÐ100 Ìõ¼Ç¼¶øÆäÖÐÓÐ80
¸ö²»Öظ´µÄË÷Òý¼üÖµ. Õâ¸öË÷ÒýµÄÑ¡ÔñÐÔ¾ÍÊÇ80/100 =
0.8£¬ÁôÒâToadÀïÏÔʾË÷ÒýµÄSelectiveº
Ïà¹ØÎĵµ£º
Ò»¡£²é¿´oracleÊý¾Ý¿âÊÇ·ñΪ¹éµµÄ£Ê½£º
1.select name,log_mode from v$database;
NAME LOG_MODE
------------------ ------------------------
QUERY NOARCHIVELO ......
UrlScanµÄ3.1ÊÇÒ»¸ö°²È«µÄ¹¤¾ß£¬ÏÞÖÆÁËIISµÄHTTPÇëÇ󽫴¦ÀíÀàÐÍ¡£ ͨ¹ý×èÖ¹ÌØ¶¨µÄHTTPÇëÇó£¬ÔÚURLScan 3.1°²È«¹¤¾ßÓÐÖúÓÚ·ÀÖ¹¶Ô·þÎñÆ÷Ó¦ÓóÌÐò¿ÉÄÜÓꦵÄÇëÇó¡£ UrlScanµÄ3.1ÊÇURLScan 2.5µÄ¸üа汾¡£Ö§³ÖIIS 5.1ÖУ¬IIS 6.0ºÍIIS 7.0ÔÚWindows VistaºÍWindows Server 2008¡£ÏÂÔØµØÖ·http://download.csdn.net ......
countÓï¾äÖ§³Ö*¡¢ÁÐÃû¡¢³£Á¿¡¢±äÁ¿,²¢ÇÒ¿ÉÒÔÓÃdistinct¹Ø¼ü×ÖÐÞÊΣ¬ ²¢ÇÒcount(ÁÐÃû)²»»áÀÛ¼ÆnullµÄ¼Ç¼¡£ÏÂÃæËæ±ãÓÃһЩÀý×Óʾ·¶Ò»ÏÂcountµÄ¹æÔò£º±ÈÈç¶ÔÈçϱí×öͳ¼Æ£¬ËùÓÐÁÐÕâÀï¶¼ÓÃsql_variantÀàÐÍÀ´±íʾ¡£
if (object_id ('t_test' )> 0 )
drop table t_test
go
create table t_test (a ......
AspNetPagerÊÇÒ»¸ö±È½ÏºÃµÄ·ÖÒ³¿Ø¼þ,¸Ã¿Ø¼þʹÓùý³Ì·Öҳʮ·Ö·½±ã,¹ý³ÌÈçÏÂ:
Create PROCEDURE [dbo].[pt_AspNetPager]
(
@tableName varchar(255), -- ±íÃû
@fieldName varchar(400)= '*', -- ×Ö¶ÎÃû
@strWhere varchar(255) = Null,
@fieldOrder varchar(100), --²»ÄÜΪ¿Õ
@startIndex int ......
CREATE proc page
@RecordCount int output,
@QueryStr nvarchar(100)='table1',--±íÃû¡¢ÊÓͼÃû¡¢²éѯÓï¾ä
@PageSize int=20, --ÿҳµÄ´óС(ÐÐÊý)
@PageCurrent int=2, --ÒªÏÔʾµÄÒ³ ´Ó0¿ªÊ¼
@FdShow nvarchar (1000)='*', --ÒªÏÔʾµÄ×Ö¶ÎÁбí
@IdentityStr nvarchar (100)='id', --Ö÷¼ü
@WhereStr nvarchar ......