Sql server 数据库表速度慢

Sql server 数据库表速度慢,sql-server,database,performance,sql-server-2008-r2,Sql Server,Database,Performance,Sql Server 2008 R2,数据库中有两个表:tb\u活动领导和tb\u提要。两个表都有数千行,主键上各有一个索引tb\u活动线索的数据量比tb\u提要多20%。对于SELECT*,tb\u提要仍然比tb\u活动领导慢6倍。有人能告诉我为什么tb_Feed这么慢吗。各表结构如下: CREATE TABLE [dbo].[tb_Feed]( [FeedID] [uniqueidentifier] NOT NULL, [DateCreated] [smalldatetime] NULL, [LeadSo

数据库中有两个表:
tb\u活动领导
tb\u提要
。两个表都有数千行,主键上各有一个索引
tb\u活动线索
的数据量比
tb\u提要
多20%。对于
SELECT*
,tb\u提要仍然比
tb\u活动领导
慢6倍。有人能告诉我为什么tb_Feed这么慢吗。各表结构如下:

CREATE TABLE [dbo].[tb_Feed](
    [FeedID] [uniqueidentifier] NOT NULL,
    [DateCreated] [smalldatetime] NULL,
    [LeadSourceID] [int] NULL,
    [RawLeadURL] [nvarchar](max) NULL,
    [CostPerEnquiry] [money] NULL,
    [ResultText] [nvarchar](max) NULL,
    [SrcResultText] [nvarchar](max) NULL,
    [SrcResult] [bit] NULL,
    [Encrypted] [bit] NULL,
    [ProductID] [int] NULL,
 CONSTRAINT [PK_tb_Feed] PRIMARY KEY CLUSTERED 


CREATE TABLE [dbo].[tb_CampaignLead](
    [LeadID] [uniqueidentifier] NOT NULL,
    [FeedID] [uniqueidentifier] NOT NULL,
    [CampaignID] [int] NOT NULL,
    [ProductID] [int] NOT NULL,
    [CompanyID] [int] NOT NULL,
    [LeadSourceID] [int] NOT NULL,
    [DateCreated] [smalldatetime] NULL,
    [LeadTextEmail] [nvarchar](max) NULL,
    [LeadTextOther] [nvarchar](max) NULL,
    [DateSent] [smalldatetime] NULL,
    [EmailResponse] [nvarchar](max) NULL,
    [OtherResponse] [nvarchar](max) NULL,
    [EmailOK] [bit] NULL,
    [OtherOK] [bit] NULL,
    [ResultPass] [bit] NULL,
    [L_Title] [nvarchar](50) NULL,
    [L_Email] [nvarchar](100) NULL,
    [L_Firstname] [nvarchar](max) NULL,
    [L_Surname] [nvarchar](max) NULL,
    [L_Address1] [nvarchar](max) NULL,
    [L_Address2] [nvarchar](max) NULL,
    [L_Address3] [nvarchar](max) NULL,
    [L_TownCity] [nvarchar](max) NULL,
    [L_AreaRegion] [nvarchar](max) NULL,
    [L_Country] [nvarchar](max) NULL,
    [L_PostCode] [nvarchar](50) NULL,
    [L_Telephone1] [nvarchar](50) NULL,
    [L_Telephone2] [nvarchar](50) NULL,
    [L_DOB] [smalldatetime] NULL,
    [L_Extra1] [nvarchar](max) NULL,
    [L_Extra2] [nvarchar](max) NULL,
    [L_Extra3] [nvarchar](max) NULL,
    [L_Extra4] [nvarchar](max) NULL,
    [L_Extra5] [nvarchar](max) NULL,
    [L_Extra6] [nvarchar](max) NULL,
    [L_Extra7] [nvarchar](max) NULL,
    [L_Extra8] [nvarchar](max) NULL,
    [L_Extra9] [nvarchar](max) NULL,
    [L_Extra10] [nvarchar](max) NULL,
    [L_Extra11] [nvarchar](max) NULL,
    [L_Extra12] [nvarchar](max) NULL,
    [L_Extra13] [nvarchar](max) NULL,
    [L_Extra14] [nvarchar](max) NULL,
    [L_Extra15] [nvarchar](max) NULL,
    [L_Extra16] [nvarchar](max) NULL,
    [L_Extra17] [nvarchar](max) NULL,
    [L_Extra18] [nvarchar](max) NULL,
    [L_Extra19] [nvarchar](max) NULL,
    [L_Extra20] [nvarchar](max) NULL,
    [SourceCost] [money] NULL,
    [CampaignCost] [money] NULL,
    [DeliveredPass] [bit] NULL,
    [FieldReqBWAND] [int] NULL,
    [FieldSuppliedBWAND] [int] NULL,
    [FilterBWAND] [int] NULL,
    [FilterPassBWAND] [int] NULL,
    [OPFilterBWAND] [int] NULL,
    [OPFilterPassBWAND] [int] NULL,
    [ProcessBWAND] [int] NULL,
    [ProcessPassBWAND] [int] NULL,
    [L_MobileNetwork] [nvarchar](max) NULL,
    [SrcResultPass] [bit] NULL,
 CONSTRAINT [PK_tb_CampaignLead] PRIMARY KEY CLUSTERED 

使用您评论中的这些信息:

ActivityLead表的数据空间为734832,提要表的数据空间为2595792

如您所见,尽管行数较少,但tb_提要的数据总量是tb_提要的3.5倍多。在SSMS中执行
SELECT*From…
操作时,它必须有效地检索大量数据,对其进行格式化,通过网络连接(如果从客户端运行),然后将其渲染到输出网格中

对于小数据集,这是如此之快,以至于它不是查询执行时间的重要部分。此外,还可以对其进行缓冲,使其显示得更快。但是,对于大型数据集,这可能需要相当长的时间,并且输出缓冲区/管道将开始备份。这不仅会降低查询执行时间,实际上还可能成为其主要因素

因此,对于SSM中这种规模的查询,我们实际上预计
tb\u提要
所需时间大约是
tb\u活动领导
的3.5倍。因此,虽然不完全相同,但您的结果肯定是正确的


这些表中还有其他可能导致额外差异的因素,包括每个表中有多少
NVARCHAR(MAX)
数据是“列外”存储的。还有一个问题对此有一些答案:

您需要向我们提供更多信息。首先,什么是RDBMS(看起来像SQL Server)?您的存储配置是什么?首先,您如何在这两个表上执行和测量
SELECT*
。明确描述您如何确定这一点。其次,这两个表的行数和数据空间(不包括索引)是什么?通过右键单击资源管理器窗格中的数据库,然后选择Reports..Disk Usage by table,可以在Management Studio(SSMS)中获取表信息。查看
数据(KB)
列,告诉我们这两个表的数据是什么。@squillman是的,我使用的是SQL Server 2008 R2。请您解释一下存储配置是什么意思。@rbaryyoung我正在SQL server management studio中执行查询。我打开实际执行计划和客户端统计信息选择*来自tb_活动领导总行:463352总执行时间:63118选择*来自tb_提要总行:363387总执行时间:418337清除缓存后运行所有查询活动领导表的数据空间为734832提要表的数据空间为2595792可能是数据库需要规范化吗?只要看一看“tb_CampaignLead”表,我就可以看到至少有2到3个表可以用它制作。而且索引(适度)也是一件好事。@DaniellepaquetteHarvey。但是如果他们真的想要这个表中每一列的每一行,那么规范化不会使它更快。然而,依我看,他们似乎不太可能真的希望这样。