Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Ò»´ÎÉñÆæµÄSQL ´íÎóµ÷ÊÔ¾­Àú

ÉÏÖܽӵ½Ò»¸öÆæ¹ÖµÄbug£¬Ò»¸öÔø¾­ÔËÐеúܺõĴ洢¹ý³ÌͻȻ²úÉúÁË´íÎóµÄ½á¹û¡£
¸ºÔðά»¤µÄÐÖµÜÃǺܸºÔðÈεĶԴíÎó½øÐÐÁ˸ú×Ù£¬²¢°Ñ´íÎó¶¨Î»Ò»¸öÈçϵÄÓï¾ä£º
SELECT *
into SomeTable
from A join B on A.id=B.id
         join C on A.id=C.id
ËûÃÇ·¢ÏÖ´ÓSomeTable×ö²éѯµÄʱºò£¬³öÀ´µÄ½á¹û±Èʵ¼Ê½á¹ûÒª´óÈô¸É±¶£¬Í¦ÆëÕûµÄ£¬4±¶»òÕß2±¶¡£
ÎҵĵÚÒ»¸ö¸Ð¾õÊÇJOIN³öÎÊÌâÁË£¬±ØÈ»ÊÇÐγÉÁ˶à¶Ô¶àµÄJOIN£¬±ÈÈçAÀïÃæÓÐÁ½ÐÐIDÒ»Ñù£¬BÒ²ÓÐÁ½ÐÐIDÒ»Ñù£¬½á¹û±í¾Í»á³öÏÖ4ÐÐÒ»ÑùµÄ£¬µÃµ½Ò»¸ö4±¶µÄ½á¹û£¬Í¬ÑùµÄµÀÀí£¬Èç¹ûAÀïÓÐÒ»ÐУ¬BÀïÓÐ2ÐУ¬½á¹û¾ÍÊÇ2±¶ÁË¡£
ÓÚÊÇÎÒÈÃËûÃǰÑSomeTable×ö³ÉÒ»¸öÎı¾Îļþ´«¸øÎÒ£¬àÅ£¬300MµÄÒ»¸öÎļþ£¬BCPµ½Êý¾Ý¿âÀSELECTÁËÒ»°Ñ£¬°Ñ³öÎÊÌâµÄÄǸöID×¥³öÀ´£¬¹ûÈ»¿´µ½¼¸¸öÖØ¸´µÄÐС£È·ÇеÄ˵¿´µ½¼¸Áм¸ºõÒ»ÑùµÄÐС£
ÓÚÊÇÎÒ¾ÍÐ˳å³åµÄ¸øËûÃÇ˵£¬¼ì²ìÒ»ÏÂBºÍCÉÏÃæµÄIDÊÇ·ñÊÇuniqueµÄ¡£
½á¹ûºÜ¿ì·µ»Ø£¬Ëµ£¬ÊÇuniqueµÄ¡£
ÕâÏÂÎÒ¾ÍɵÑÛÁË£¬ÕâÔõô¿ÉÄÜÄØ¡£ÖØÐÂ×ÐϸµÄ¿´Á˱ãÉϴβ鴦µÄ½á¹û£¬·¢ÏÖÔ­±¾ÒÔÎªÖØ¸´µÄÐУ¬¾¹È»²»ÊÇÍêÈ«ÏàͬµÄ£¬àÅ£¬ÓÐÒ»ÁÐÊDz»Í¬µÄ£¬¶øÕâÒ»ÁÐÕýʽB.ID¡£Çë×¢Ò⣬ÕâЩÐÐÔÚA.idÉÏÊÇÒ»ÑùµÄ¡£
ÕâÊÇÒ»¸ö¾ªÈ˵ķ¢ÏÖ£¬ÎÒͨ¹ýA JOIN B JOIN C³öÀ´µÄ½á¹û¾ÓÈ»²»Âú×ãJIONµÄÌõ¼þ£¬Õâ³¹µ×µß¸²Á˶àÄêѧϰµÄ¹ØÏµÊý¾Ý¿â֪ʶ¡£
ºÁÎÞÒÉÎÊ£¬ÕâÊÇSQL ServerµÄÒ»¸öbug¡£È»¶øÈçºÎ½¨Ò»¸ö×îСµÄÊý¾Ý¼¯ºÏÀ´ÖØÏÖÕâ¸öbug³ÉÁËеÄÌôÕ½¡£ÒòΪABCÈý¸ö±í¼ÓÆðÀ´ÓÐ200G£¬¶øÈç¹ûÎÒɾµôһЩ¿´ÆðÀ´²»Ïà¹ØµÄÐУ¬´íÎó¾ÍÏûʧÁË¡£ÎÒÒ²ÊÔͼ½«ABCµÄJION·Ö³ÉÁ½²½À´×ö£¬
±ÈÈ磺
select *
from
(SELECT * from A JOIN B) AS D
   JOIN C ON...
½á¹ûÈÔÈ»´íÎó¡£
µ«ÊÇÈç¹ûÔÙ½øÒ»²½£¬
SElect * into temp from A join B...
Select * from temp join C...
´íÎóÏûʧÁË¡£
ǭ¿¼¼ÇîÖ®ºó£¬°³Ö»ºÃÇó¾ÈÓÚSQl serverµÄ¼¼ÊõÖ§³Ö¡£¸Õ¿ªÊ¼·¢ÁË·âÐÅ£¬ÎÊÓÐûÓÐÈËÓöµ½¹ýÕâÖÖÎÊÌ⣬ABC ½»³öµÄ½á¹û°üº¬²»Âú×ãJOINÌõ¼þµÄÐС£½á¹ûÒ»¸öС×Ó¾ÓȻ˵£¬Õâ¸öÎÊÌâÌ«»ù±¾£¬ÕâÖÖÇé¿ö¸ù±¾²»¿ÉÄܳöÏÖ¡£ Sigh£¬´óÊåÎÒÒ²²»ÊÇÐÂÊÖ£¬¼òµ¥ÎÊÌ⻹ÐèÒªÀÍ·³ÄúÀÏÈ˼ÒÂð¡£
ÓÚÊÇÔÙ×ÐϸµÄÃèÊöÎÊÌ⣬ÖÕÓÚ³öÁËÒ»¸ö±È½Ï¿¿Æ×µÄ¸çÃÇ£¬ÈÃÎÒ°ÑÖ´Ðмƻ®·¢¸øËû¿´¿´¡£ÔÙÈ»ºóÁíÍâÒ»¸ö¸çÃÇ˵¿ÉÄÜÊDz¢·¢ÒýÆðµÄÎÊÌ⣬½¨ÒéÎÒÓÃMAXDOPÀ´ÏÞÖÆ²ÎÓëÖ´ÐеÄCPU¸öÊý¡£ÓÚÊÇ£¬ÎÒÔÚÔ­À´µÄSQLºóÃæ¼ÓÁ˸öOPTION MAXDOP=1£¬¹ûÈ»¾­¹ý7·ÖÖÓµÄÖ´ÐУ¬Îҵõ½ÁËÕýÈ·µÄ½


Ïà¹ØÎĵµ£º

ÔÚWindows2003ϰ²×°SQL Server 2000

     ÔÚwindows2003ÏÂÃæ°²×°SQL Server2000£¬»áÌáʾwindows²»Ö§³ÖSQL Server2000µÄ°æ±¾£¬°²×°ºó£¬ÔÚ±¾»úÊÇ¿ÉÒÔÕý³£Ê¹Óõ쬵«ÊÇÎÞ·¨Á¬½Óµ½ÆäËûSQL Server2000µÄ·þÎñÆ÷£¬Ò²ÎÞ·¨Í¨¹ýÆäËû»úÆ÷ÉϵÄSQL Server2000·ÃÎÊ£¬±ØÐë°²×°SQL Server2000sp3»òsp4²¹¶¡²Å¿ÉÒÔ¡£ÆäʵÓÃSQL Server2005¾ÍûÕâôÂé·³ÁË¡£ ......

PL/SQL Best Practice On BULK COLLECT

On BULK COLLECT
By Steven Feuerstein Oracle ACE
Best practices for knowing your LIMIT and kicking %NOTFOUND
I have started using BULK COLLECT whenever I need to fetch large volumes of data. This has caused me some trouble with my DBA, however. He is complaining that although my programs mig ......

SQL Group By Top ʵÏÖ

DECLARE @temp TABLE(
id INT,
[name] VARCHAR(50),
class VARCHAR(50)
)
INSERT INTO @temp
SELECT 1,'a','A'
UNION ALL SELECT 2,'b','C'
UNION ALL SELECT 3,'c','B'
UNION ALL SELECT 4,'d','C'
UNION ALL SELECT 5,'e','B'
UNION ALL SELECT 6,'f','A'
SELECT * from @temp AS _temp WHERE [name] IN
( ......

Ò»²½Ò»²½Ñ§Linq to sqlϵÁÐÎÄÕÂ

ÏÖÔÚLinq to sqlµÄ×ÊÁÏ»¹²»ÊǺܶ࣬±¾ÈËˮƽÓÐÏÞ£¬Èç¹ûÓдí»òÕßÎóµ¼ÇëÖ¸³ö£¬Ð»Ð»¡£
Ò»²½Ò»²½Ñ§Linq to sql£¨Ò»£©£ºÔ¤±¸ÖªÊ¶
Ò»²½Ò»²½Ñ§Linq to sql£¨¶þ£©£ºDataContextÓëʵÌå 
Ò»²½Ò»²½Ñ§Linq to sql£¨Èý£©£ºÔöɾ¸Ä
Ò»²½Ò»²½Ñ§Linq to sql£¨ËÄ£©£º²éѯ¾ä·¨
Ò»²½Ò»²½Ñ§Linq to sql£¨Î壩£º´æ´¢¹ý³Ì
Ò»²½Ò»²½ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ