MS SQL ²éѯÁª½ÓÔËËãϵÁУ£¹þÏ£Áª½Ó£¨Hash Join)
¹þÏ£Áª½ÓÊǵÚÈýÖÖÎïÀíÁª½ÓÔËËã·û£¬µ±Ëµµ½¹þÏ£Áª½Óʱ£¬ËüÊÇÈýÖÖÁª½ÓÔËËãÖÐÐÔÄÜ×îºÃµÄ£®Ç¶Ì×Ñ»·Áª½ÓÊÊÓÃÓÚÏà¶Ô½ÏСµÄÊý¾Ý¼¯£¬¶øºÏ²¢Áª½ÓÊÊÓÃÓÚÖеȹæÄ£µÄÊý¾Ý¼¯£¬¶ø¹þÏ£Áª½ÓÔòÊÊÓÃÓÚ´ó¹æÄ£Áª½ÓµÄÊý¾Ý¼¯£®
¹þÏ£Áª½ÓËã·¨²ÉÓ㢹¹½¨£¢ºÍ£¢Ì½²â£¢Á½²½À´Ö´ÐУ®ÔÚ£¢¹¹½¨£¢½×¶Î£¬ËüÊ×ÏÈ´ÓµÚÒ»¸öÊäÈëÖжÁÈ¡ËùÓÐÐУ¨³£½Ð×ö×ó»ò¹¹½¨ÊäÈ룩ÔÚÏàµÈÁª½Ó¼üÉ϶ÔÕâЩÐнøÐйþ
Ï££¬È»ºóÔÚÄÚ´æÖд´½¨¹þÏ£±í£¬ÔÚ£¢Ì½²â£¢½×¶Î£¬´ÓµÚ¶þ¸öÊäÈëÖжÁÈ¡ËùÓÐÐУ¨³£½Ð×öÓÒÖÐ̽²âÊäÈ룩ÔÚÏàµÄµÈÖµÁª½Ó¼üÉ϶ÔÕâЩÐнøÐйþÏ££¬²éÕÒ¿É̽²â¸Ã¹þÏ£±í
ÖÐÆ¥ÅäµÄÐУ®
ÏÂÃæÊÇα´úÂëÃèÊö£º
for each row R1 in the build table
begin
calculate hash value on R1 join key(s)
insert R1 into the appropriate hash bucket
end
for each row R2 in the probe table
begin
calculate hash value on R2 join key(s)
for each row R1 in the corresponding hash bucket
if R1 joins with R2
output (R1, R2)
end
ʾÀý£º
´´½¨±í¶ÔÏó¼Ü¹¹£º
create table T1 (a int, b int, x char(200))
create table T2 (a int, b int, x char(200))
create table T3 (a int, b int, x char(200))
set nocount on
declare @i int
set @i = 0
while @i < 1000
begin
insert T1 values (@i * 2, @i * 5, @i)
set @i = @i + 1
end
GO
declare @i int
set @i = 0
while @i < 10000
begin
insert T2 values (@i * 3, @i * 7, @i)
set @i = @i + 1
end
GO
declare @i int
set @i = 0
while @i < 100000
begin
insert T3 values (@i * 5, @i * 11, @i)
set @i = @i + 1
end
GO
ÏÖÔÚÖ´ÐÐÒÔϲéѯ£º
set statistics profile on
select *
from T1 join T2 on T1.a = T2.a
set statistics profile off
Ö´ÐÐÉÏÊö²éѯµÃµ½Èçϲéѯ¼Æ»®£º
[img=550,189 alt=]http://www.haixiait.com/attachments/month_0804/v200841125633.JPG[/img]
´ÓÊä³öÐÅÏ¢Á˽⵽£¬T2±íÊÇT1±íµÄ£±£°±¶£¬¶ø²éѯÓÅ»¯Æ÷ÔòÑ¡ÔñT1±í×÷Ϊ£¢¹¹½¨£¢±í£¬T2±í×÷Ϊ£¢Ì½²â£¢±í£®
ÏÂÃæÀ´¿´Ò»ÏÂÈý¸ö±íµÄÁª½Ó£º
set statistics profile on
select *
from (T1 join T2 on T1.a = T2.a)
join T3 on T1.b = T3.a
set statistics profile off
Ö´ÐÐÉÏÊö²éѯµÃµ½Èçϼƻ®£º
[img=550,191 alt=]http://www.haixiait.com/attachm
Ïà¹ØÎĵµ£º
ORACLEÖÐ×ֶεÄÊý¾ÝÀàÐÍ
×Ö·ûÐÍ char ·¶Î§ ×î´ó2000¸ö×Ö½Ú ¶¨³¤
char(10) 'ÕÅÈý' ºóÌí¿Õ¸ñ6¸ö°Ñ10¸ö×Ö½Ú²¹Âú 'ÕÅÈý &nb ......
SQLÓï¾äʵÏÖ£¬SQL Server 2000 ¼°ACCESS¸´ÖƾɱíOldTableµÄ½á¹¹£¬»ò½á¹¹¼°ÄÚÈݵ½ÐµıíNewTable
Á½¸ö¶¼ÊÔ¹ýÁË£¬ÏÂÃæµÄ´úÂëÔÚÕâÁ½¸öÊý¾Ý¿âÖУ¨SQL Server 2000 ¼°ACCESS£©¶¼ÊÇ¿ÉÒÔͨ¹ýµÄ¡£
--¸´ÖƱí½á¹¹ÎªÐµıí
select * into NewTable
from OldTable where 1=2
--¸´ÖƱí½á¹¹¼°ÄÚÈݵ½Ðµıí
select * into newtable
......
Ê×ÏÈ´´½¨²âÊÔ±í¡¢Ìí¼ÓÊý¾Ý¡£
create table #t(a int,b int,c int,d int,e int)
insert into #t values(1,2,3,4,5)
insert into #t values(1,2,3,4,6)
insert into #t values(1,2,3,4,7)
insert into #t values(1,2,3 ......
How To Use Dynamic Sql in Sql Server ?
¶¯Ì¬SQL ÔÚsql server ProcedureÖеÄÓ¦ÓÃ
Create PROCEDURE [dbo].[Proc_Get_Serial_No]
(
@Table_Name varchar(20),
......
PowerDesignerÉú³ÉSQL½Å±¾Ê±±íÃû¡¢×Ö¶ÎÃû´øÒýºÅÎÊÌâ
ʹÓÃPowerDesignerÉú³ÉÊý¾Ý¿â½Å±¾Ê±£¬±íÃûÒ»°ã»á´øÒýºÅ¡£ÈçÏ£º
¼ÓÒýºÅÊÇPL/SQLµÄ¹æ·¶£¬Êý¾Ý¿â»áÑϸñ°´ÕÕ“”ÖеÄÃû³Æ½¨±í£¬Èç¹ûûÓГ”£¬»á°´ÕÕORACLEĬÈϵÄÉèÖý¨±í£¬Ä¬ÈÏÊÇÈ«²¿´óд£ ......