posts - 101,  comments - 29,  trackbacks - 0

          首先我們先創建兩個表:


          CREATE TABLE [dbo].[Roles](
          [Name] [nvarchar](50NOT NULL,
          [CreatedAt] [datetime] NOT NULL,
          [UpdatedAt] [datetime] NOT NULL,
          [Deleted] [bit] NOT NULL,
          [RoleStatus] [int] NOT NULL,
          [ID] [uniqueidentifier] NOT NULL,
          [SystemID] [uniqueidentifier] NOT NULL,
          [RoleKind] [int] NOT NULL,
           
          CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED 
          (
          [ID] ASC
          )
          WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
          ON [PRIMARY]


          GO


          EXEC sys.sp_addextendedproperty @name=N'MS_Description'@value=N'1=默認管理員角色,2=普通角色' , @level0type=N'SCHEMA',@level0name=N'dbo'@level1type=N'TABLE',@level1name=N'Roles'@level2type=N'COLUMN',@level2name=N'RoleKind'
          GO


          ALTER TABLE [dbo].[Roles] ADD  CONSTRAINT [DF_Roles_Deleted]  DEFAULT ((0)) FOR [Deleted]
          GO


          ALTER TABLE [dbo].[Roles] ADD  CONSTRAINT [DF_Roles_RoleStatus]  DEFAULT ((1)) FOR [RoleStatus]
          GO


          ALTER TABLE [dbo].[Roles] ADD  CONSTRAINT [DF_Roles_RoleKind]  DEFAULT ((2)) FOR [RoleKind]
          GO

          CREATE TABLE [dbo].[RoleFunctions](
          [MappingID] [int] IDENTITY(1,1NOT NULL,
          [Status] [int] NOT NULL,
          [RoleID] [uniqueidentifier] NOT NULL,
          [FunctionID] [uniqueidentifier] NOT NULL,
           
          CONSTRAINT [PK_RoleFunctions] PRIMARY KEY CLUSTERED 
          (
          [MappingID] ASC
          )
          WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
          ON [PRIMARY]


          GO


          ALTER TABLE [dbo].[RoleFunctions] ADD  CONSTRAINT [DF_RoleFunctions_Status]  DEFAULT ((0)) FOR [Status]
          GO

          以下是兩個條SQL查詢語句,但是不同的是一個是用inner jion,一個是用left jion,但是兩個查詢語句的執行計劃差距非常大

          /****** Script for SelectTopNRows command from SSMS  ******/
          SELECT [MappingID]
                ,
          [Status]
                ,
          [RoleID]
                ,
          [FunctionID]
            
          FROM [RoleFunctions]
            
          left join roles on roles.id = rolefunctions.functionid


          SELECT [MappingID]
                ,
          [Status]
                ,
          [RoleID]
                ,
          [FunctionID]
            
          FROM [RoleFunctions]
            
          inner join roles on roles.id = rolefunctions.functionid


          期望高手給予講解……

          posted on 2012-05-19 14:55 mixer-a 閱讀(1991) 評論(1)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 营口市| 清远市| 西藏| 邵东县| 阜阳市| 蒙城县| 福贡县| 文成县| 东兰县| 大厂| 东丰县| 建昌县| 邵阳县| 吉水县| 彭泽县| 涞水县| 锡林浩特市| 麻栗坡县| 柏乡县| 肃北| 红原县| 商河县| 视频| 威信县| 德阳市| 湖口县| 旬阳县| 汾西县| 芦山县| 安新县| 白玉县| 高碑店市| 宜宾市| 阜康市| 泰来县| 绥芬河市| 习水县| 八宿县| 尖扎县| 阿尔山市| 定陶县|