---- ÈËÃÇÔÚʹÓÃSQLʱÍùÍù»áÏÝÈëÒ»¸öÎóÇø£¬¼´Ì«¹Ø×¢ÓÚËùµÃµÄ½á¹ûÊÇ·ñÕýÈ·£¬¶øºöÂÔÁ˲»Í¬µÄʵÏÖ·½·¨Ö®¼ä¿ÉÄÜ´æÔÚµÄ
ÐÔÄܲîÒ죬ÕâÖÖÐÔÄܲîÒìÔÚ´óÐ͵ĻòÊǸ´ÔÓµÄÊý¾Ý¿â»·¾³ÖУ¨ÈçÁª»úÊÂÎñ´¦ÀíOLTP»ò¾ö²ßÖ§³ÖϵͳDSS£©ÖбíÏÖµÃÓÈΪÃ÷
ÏÔ¡£±ÊÕßÔÚ¹¤×÷ʵ¼ùÖз¢ÏÖ£¬²»Á¼µÄSQLÍùÍùÀ´×ÔÓÚ²»Ç¡µ±µÄË÷ÒýÉè¼Æ¡¢²»³ä·ÝµÄÁ¬½ÓÌõ¼þºÍ²»¿ÉÓÅ»¯µÄwhere×Ӿ䡣ÔÚ¶Ô
ËüÃǽøÐÐÊʵ±µÄÓÅ»¯ºó£¬ÆäÔËÐÐËÙ¶ÈÓÐÁËÃ÷ÏÔµØÌá¸ß£¡ÏÂÃæÎÒ½«´ÓÕâÈý¸ö·½Ãæ·Ö±ð½øÐÐ×ܽ᣺
---- ΪÁ˸üÖ±¹ÛµØËµÃ÷ÎÊÌ⣬ËùÓÐʵÀýÖеÄSQLÔËÐÐʱ¼ä¾ù¾¹ý²âÊÔ£¬²»³¬¹ý£±ÃëµÄ¾ù±íʾΪ£¨< 1Ã룩¡£
---- ²âÊÔ»·¾³--
---- Ö÷»ú£ºHP LH II
---- Ö÷Ƶ£º330MHZ
---- Äڴ棺128Õ×
---- ²Ù×÷ϵͳ£ºOperserver5.0.4
----Êý¾Ý¿â£ºSybase11.0.3
Ò»¡¢²»ºÏÀíµÄË÷ÒýÉè¼Æ
----Àý£º±írecordÓÐ620000ÐУ¬ÊÔ¿´ÔÚ²»Í¬µÄË÷ÒýÏ£¬ÏÂÃæ¼¸¸ö SQLµÄÔËÐÐÇé¿ö£º
---- 1.ÔÚdateÉϽ¨ÓÐÒ»·Ç¸öȺ¼¯Ë÷Òý
select count(*) from record where date >
'19991201' and date < '19991214'and amount >
2000 (25Ãë)
select date,sum(amount) from record group by date
(55Ãë)
select count(*) from record where date >
'19990901' and place in ('BJ','SH') (27Ãë)
---- ·ÖÎö£º
----dateÉÏÓдóÁ¿µÄÖØ¸´Öµ£¬ÔÚ·ÇȺ¼¯Ë÷ÒýÏ£¬Êý¾ÝÔÚÎïÀíÉÏËæ»ú´æ·ÅÔÚÊý¾ÝÒ³ÉÏ£¬ÔÚ·¶Î§²éÕÒʱ£¬±ØÐëÖ´ÐÐÒ»´Î±íɨÃè
²ÅÄÜÕÒµ½ÕâÒ»·¶Î§ÄÚµÄÈ«²¿ÐС£
---- 2.ÔÚdateÉϵÄÒ»¸öȺ¼¯Ë÷Òý
select count(*) from record where date >
'19991201' and date < '19991214' and amount >
2000 £¨14Ã룩
select date,sum(amount) from record group by date
£¨28Ã룩
select count(*) from record where date >
'19990901' and place in ('BJ','SH')£¨14Ã룩
---- ·ÖÎö£º
---- ÔÚȺ¼¯Ë÷ÒýÏ£¬Êý¾ÝÔÚÎïÀíÉϰ´Ë³ÐòÔÚÊý¾ÝÒ³ÉÏ£¬Öظ´ÖµÒ²ÅÅÁÐÔÚÒ»Æð£¬Òò¶øÔÚ·¶Î§²éÕÒʱ£¬¿ÉÒÔÏÈÕÒµ½Õâ¸ö·¶Î§µÄ
ÆðÄ©µã£¬ÇÒÖ»ÔÚÕâ¸ö·¶Î§ÄÚɨÃèÊý¾ÝÒ³£¬±ÜÃâÁË´ó·¶Î§É¨Ã裬Ìá¸ßÁ˲éѯËÙ¶È¡£
---- 3.ÔÚplace£¬date£¬amountÉϵÄ×éºÏË÷Òý
select count(*) from record where date >
'19991201' and date < '19991214' and amount >
2000 £¨26Ã룩
select date,sum(amount) from record group by date
£¨27Ã룩
select count(*) from record where date >
'19990901' and place in ('BJ, 'SH')£¨< 1Ã룩
---- ·ÖÎö£º
---- ÕâÊÇÒ»¸ö²»ºÜºÏÀíµÄ×éºÏË÷Òý£¬ÒòΪËüµÄǰµ¼ÁÐÊÇplace£¬µÚÒ»ºÍµÚ¶þÌõSQLûÓÐÒýÓÃplace£¬Òò´ËҲûÓÐÀûÓÃÉÏË÷
Òý£»µÚÈý¸öSQLʹÓÃÁËplace£¬ÇÒÒýÓõÄËùÓÐÁж¼°üº¬ÔÚ×éºÏË÷ÒýÖУ¬ÐγÉÁËË÷Òý¸²¸Ç£¬ËùÒÔËüµÄËÙ¶ÈÊǷdz£¿ìµÄ¡£
---- 4.ÔÚdate£¬place£¬amountÉϵÄ×éºÏË÷Òý
select count(*) from record where date >
'19991201' and date < '19991214' and amount >
2000(< 1Ãë)
select date,sum(amount) from record group by date
£¨11Ã룩
select count(*) from record where date >
'19990901' and place in ('BJ','SH')£¨< 1Ã룩
---- ·ÖÎö£º
---- ÕâÊÇÒ»¸öºÏÀíµÄ×éºÏË÷Òý¡£Ëü½«date×÷Ϊǰµ¼ÁУ¬Ê¹Ã¿¸öSQL¶¼¿ÉÒÔÀûÓÃË÷Òý£¬²¢ÇÒÔÚµÚÒ»ºÍµÚÈý¸öSQLÖÐÐγÉÁËË÷Òý
¸²¸Ç£¬Òò¶øÐÔÄÜ´ïµ½ÁË×îÓÅ¡£
---- 5.×ܽ᣺
---- ȱʡÇé¿öϽ¨Á¢µÄË÷ÒýÊÇ·ÇȺ¼¯Ë÷Òý£¬µ«ÓÐʱËü²¢²»ÊÇ×î¼ÑµÄ£»ºÏÀíµÄË÷ÒýÉè¼ÆÒª½¨Á¢ÔÚ¶Ô¸÷ÖÖ²éѯµÄ·ÖÎöºÍÔ¤²â
ÉÏ¡£Ò»°ãÀ´Ëµ£º
---- ¢Ù.ÓдóÁ¿Öظ´Öµ¡¢ÇÒ¾³£Óз¶Î§²éѯ
£¨between, >,< £¬>=,< =£©ºÍorder by
¡¢group by·¢ÉúµÄÁУ¬¿É¿¼Âǽ¨Á¢Èº¼¯Ë÷Òý£»
---- ¢Ú.¾³£Í¬Ê±´æÈ¡¶àÁУ¬ÇÒÿÁж¼º¬ÓÐÖØ¸´Öµ¿É¿¼Âǽ¨Á¢×éºÏË÷Òý£»
---- ¢Û.×éºÏË÷ÒýÒª¾¡Á¿Ê¹¹Ø¼ü²éѯÐγÉË÷Òý¸²¸Ç£¬Æäǰµ¼ÁÐÒ»¶¨ÊÇʹÓÃ×îÆµ·±µÄÁС£
¶þ¡¢²»³ä·ÝµÄÁ¬½ÓÌõ¼þ£º
---- Àý£º±ícardÓÐ7896ÐУ¬ÔÚcard_noÉÏÓÐÒ»¸ö·Ç¾Û¼¯Ë÷Òý£¬±íaccountÓÐ191122ÐУ¬ÔÚ account_noÉÏÓÐÒ»¸ö·Ç¾Û¼¯Ë÷
Òý£¬ÊÔ¿´ÔÚ²»Í¬µÄ±íÁ¬½ÓÌõ¼þÏ£¬Á½¸öSQLµÄÖ´ÐÐÇé¿ö£º
select sum(a.amount) from account a,
card b where a.card_no = b.card_no£¨20Ã룩
---- ½«SQL¸ÄΪ£º
select sum(a.amount) from account a,
card b where a.card_no = b.card_no and a.
account_no=b.account_no£¨< 1Ã룩
---- ·ÖÎö£º
---- ÔÚµÚÒ»¸öÁ¬½ÓÌõ¼þÏ£¬×î¼Ñ²éѯ·½°¸Êǽ«account×÷Íâ²ã±í£¬card×÷ÄÚ²ã±í£¬ÀûÓÃcardÉϵÄË÷Òý£¬ÆäI/O´ÎÊý¿ÉÓÉÒÔÏÂ
¹«Ê½¹ÀËãΪ£º
---- Íâ²ã±íaccountÉϵÄ22541Ò³+£¨Íâ²ã±íaccountµÄ191122ÐÐ*ÄÚ²ã±ícardÉ϶ÔÓ¦Íâ²ã±íµÚÒ»ÐÐËùÒª²éÕÒµÄ3Ò³£©=595907
´ÎI/O
---- ÔÚµÚ¶þ¸öÁ¬½ÓÌõ¼þÏ£¬×î¼Ñ²éѯ·½°¸Êǽ«card×÷Íâ²ã±í£¬account×÷ÄÚ²ã±í£¬ÀûÓÃaccountÉϵÄË÷Òý£¬ÆäI/O´ÎÊý¿ÉÓÉ
ÒÔϹ«Ê½¹ÀËãΪ£º
---- Íâ²ã±ícardÉϵÄ1944Ò³+£¨Íâ²ã±ícardµÄ7896ÐÐ*ÄÚ²ã±íaccountÉ϶ÔÓ¦Íâ²ã±íÿһÐÐËùÒª²éÕÒµÄ4Ò³£©= 33528´ÎI/O
---- ¿É¼û£¬Ö»Óгä·ÝµÄÁ¬½ÓÌõ¼þ£¬ÕæÕýµÄ×î¼Ñ·½°¸²Å»á±»Ö´ÐС£
---- ×ܽ᣺
---- 1.¶à±í²Ù×÷ÔÚ±»Êµ¼ÊÖ´ÐÐǰ£¬²éѯÓÅ»¯Æ÷»á¸ù¾ÝÁ¬½ÓÌõ¼þ£¬Áгö¼¸×é¿ÉÄܵÄÁ¬½Ó·½°¸²¢´ÓÖÐÕÒ³öϵͳ¿ªÏú×îСµÄ×î¼Ñ
·½°¸¡£Á¬½ÓÌõ¼þÒª³ä·Ý¿¼ÂÇ´øÓÐË÷ÒýµÄ±í¡¢ÐÐÊý¶àµÄ±í£»ÄÚÍâ±íµÄÑ¡Ôñ¿ÉÓɹ«Ê½£ºÍâ²ã±íÖÐµÄÆ¥ÅäÐÐÊý*ÄÚ²ã±íÖÐÿһ´Î²é
ÕҵĴÎÊýÈ·¶¨£¬³Ë»ý×îСΪ×î¼Ñ·½°¸¡£
---- 2.²é¿´Ö´Ðз½°¸µÄ·½·¨-- ÓÃset showplanon£¬´ò¿ªshowplanÑ¡Ï¾Í¿ÉÒÔ¿´µ½Á¬½Ó˳Ðò¡¢Ê¹ÓúÎÖÖË÷ÒýµÄÐÅÏ¢£»Ïë
¿´¸üÏêϸµÄÐÅÏ¢£¬ÐèÓÃsa½ÇɫִÐÐdbcc(3604,310,302)¡£
Èý¡¢²»¿ÉÓÅ»¯µÄwhere×Ó¾ä
---- 1.Àý£ºÏÂÁÐSQLÌõ¼þÓï¾äÖеÄÁж¼½¨ÓÐÇ¡µ±µÄË÷Òý£¬µ«Ö´ÐÐËÙ¶ÈÈ´·Ç³£Âý£º
select * from record where
substring(card_no,1,4)='5378'(13Ãë)
select * from record where
amount/30< 1000£¨11Ã룩
select * from record where
convert(char(10),date,112)='19991201'£¨10Ã룩
---- ·ÖÎö£º
---- where×Ó¾äÖжÔÁеÄÈκβÙ×÷½á¹û¶¼ÊÇÔÚSQLÔËÐÐʱÖðÁмÆËãµÃµ½µÄ£¬Òò´ËËü²»µÃ²»½øÐбíËÑË÷£¬¶øÃ»ÓÐʹÓøÃÁÐÉÏÃæ
µÄË÷Òý£»Èç¹ûÕâЩ½á¹ûÔÚ²éѯ±àÒëʱ¾ÍÄܵõ½£¬ÄÇô¾Í¿ÉÒÔ±»SQLÓÅ»¯Æ÷ÓÅ»¯£¬Ê¹ÓÃË÷Òý£¬±ÜÃâ±íËÑË÷£¬Òò´Ë½«SQLÖØÐ´³É
ÏÂÃæÕâÑù£º
select * from record where card_no like
'5378%'£¨< 1Ã룩
select * from record where amount
< 1000*30£¨< 1Ã룩
select * from record where date= '1999/12/01'
£¨< 1Ã룩
---- Äã»á·¢ÏÖSQLÃ÷ÏÔ¿ìÆðÀ´£¡
---- 2.Àý£º±ístuffÓÐ200000ÐУ¬id_noÉÏÓзÇȺ¼¯Ë÷Òý£¬Çë¿´ÏÂÃæÕâ¸öSQL£º
select count(*) from stuff where id_no in('0','1')
£¨23Ã룩
---- ·ÖÎö£º
---- whereÌõ¼þÖеÄ'in'ÔÚÂß¼ÉÏÏ൱ÓÚ'or'£¬ËùÒÔÓï·¨·ÖÎöÆ÷»á½«in ('0','1')ת»¯Îªid_no ='0' or id_no='1'À´Ö´
ÐС£ÎÒÃÇÆÚÍûËü»á¸ù¾Ýÿ¸öor×Ó¾ä·Ö±ð²éÕÒ£¬ÔÙ½«½á¹ûÏà¼Ó£¬ÕâÑù¿ÉÒÔÀûÓÃid_noÉϵÄË÷Òý£»µ«Êµ¼ÊÉÏ£¨¸ù¾Ýshowplan£©,
ËüÈ´²ÉÓÃÁË"OR²ßÂÔ"£¬¼´ÏÈÈ¡³öÂú×ãÿ¸öor×Ó¾äµÄÐУ¬´æÈëÁÙʱÊý¾Ý¿âµÄ¹¤×÷±íÖУ¬ÔÙ½¨Á¢Î¨Ò»Ë÷ÒýÒÔÈ¥µôÖØ¸´ÐУ¬×îºó
´ÓÕâ¸öÁÙʱ±íÖмÆËã½á¹û¡£Òò´Ë£¬Êµ¼Ê¹ý³ÌûÓÐÀûÓÃid_noÉÏË÷Òý£¬²¢ÇÒÍê³Éʱ¼ä»¹ÒªÊÜtempdbÊý¾Ý¿âÐÔÄܵÄÓ°Ïì¡£
---- ʵ¼ùÖ¤Ã÷£¬±íµÄÐÐÊýÔ½¶à£¬¹¤×÷±íµÄÐÔÄܾÍÔ½²î£¬µ±stuffÓÐ620000ÐÐʱ£¬Ö´ÐÐʱ¼ä¾¹´ïµ½220Ã룡»¹²»È罫or×Ó¾ä·Ö
¿ª£º
select count(*) from stuff where id_no='0'
select count(*) from stuff where id_no='1'
---- µÃµ½Á½¸ö½á¹û£¬ÔÙ×÷Ò»´Î¼Ó·¨ºÏËã¡£ÒòΪÿ¾ä¶¼Ê¹ÓÃÁËË÷Òý£¬Ö´ÐÐʱ¼äÖ»ÓÐ3Ã룬ÔÚ620000ÐÐÏ£¬Ê±¼äÒ²Ö»ÓÐ4Ãë¡£»ò
Õߣ¬ÓøüºÃµÄ·½·¨£¬Ð´Ò»¸ö¼òµ¥µÄ´æ´¢¹ý³Ì£º
create proc count_stuff as
declare @a int
declare @b int
declare @c int
declare @d char(10)
begin
select @a=count(*) from stuff where id_no='0'
select @b=count(*) from stuff where id_no='1'
end
select @c=@a+@b
select @d=convert(char(10),@c)
print @d
---- Ö±½ÓËã³ö½á¹û£¬Ö´ÐÐʱ¼äͬÉÏÃæÒ»Ñù¿ì£¡
---- ×ܽ᣺
---- ¿É¼û£¬ËùνÓÅ»¯¼´where×Ó¾äÀûÓÃÁËË÷Òý£¬²»¿ÉÓÅ»¯¼´·¢ÉúÁ˱íɨÃè»ò¶îÍ⿪Ïú¡£
---- 1.ÈκζÔÁеIJÙ×÷¶¼½«µ¼Ö±íɨÃ裬Ëü°üÀ¨Êý¾Ý¿âº¯Êý¡¢¼ÆËã±í´ïʽµÈµÈ£¬²éѯʱҪ¾¡¿ÉÄܽ«²Ù×÷ÒÆÖÁµÈºÅÓұߡ£
---- 2.in¡¢or×Ӿ䳣»áʹÓù¤×÷±í£¬Ê¹Ë÷ÒýʧЧ£»Èç¹û²»²úÉú´óÁ¿Öظ´Öµ£¬¿ÉÒÔ¿¼ÂǰÑ×Ó¾ä²ð¿ª£»²ð¿ªµÄ×Ó¾äÖÐÓ¦¸Ã°üº¬
Ë÷Òý¡£
---- 3.񻃮ÓÚʹÓô洢¹ý³Ì£¬ËüʹSQL±äµÃ¸ü¼ÓÁé»îºÍ¸ßЧ¡£
---- ´ÓÒÔÉÏÕâЩÀý×Ó¿ÉÒÔ¿´³ö£¬SQLÓÅ»¯µÄʵÖʾÍÊÇÔÚ½á¹ûÕýÈ·µÄǰÌáÏ£¬ÓÃÓÅ»¯Æ÷¿ÉÒÔʶ±ðµÄÓï¾ä£¬³ä·ÝÀûÓÃË÷Òý£¬¼õ
ÉÙ±íɨÃèµÄI/O´ÎÊý£¬¾¡Á¿±ÜÃâ±íËÑË÷µÄ·¢Éú¡£ÆäʵSQLµÄÐÔÄÜÓÅ»¯ÊÇÒ»¸ö¸´ÔӵĹý³Ì£¬ÉÏÊöÕâЩֻÊÇÔÚÓ¦Óòã´ÎµÄÒ»ÖÖÌå
ÏÖ£¬ÉîÈëÑо¿»¹»áÉæ¼°Êý¾Ý¿â²ãµÄ×ÊÔ´ÅäÖá¢ÍøÂç²ãµÄÁ÷Á¿¿ØÖÆÒÔ¼°²Ù×÷ϵͳ²ãµÄ×ÜÌåÉè¼Æ¡£

