Im在数据库中进行简单查询,在两栏进行查询。 我有一栏索引。 当我对库克服务器管理演播室进行搜索时,只需要几毫秒才能完成(途径不到10)。 当我在NHibernate做同样的问询时,需要30秒钟。 我对询问作了总结,而制作的SQ是罚款。 使用NHibernate Profiler的Im,当我选择NHibernate Profiler的“show query results”时,取得结果的所需时间不到第二。 我从这里来的就是这样吗?
EDIT:因此,我决定利用会议这样做。 创建SQLQuery(SQL),它非常快。 为什么要比其他方法更快?
EDIT:使用查询参数似乎是问题。 我创建了一个没有参数的当地雇佣兵,是罚款。 一旦我增加点名,点击执行时间就会急剧上升。
TABLE SCHEMA:
CREATE TABLE [dbo].[CRDefendant](
[Id] [int] NOT NULL,
[FirstName] [varchar](30) NULL,
[LastName] [varchar](30) NULL,
[MiddleName] [varchar](30) NULL,
[Race] [char](1) NULL,
[Sex] [char](1) NULL,
[BirthDate] [char](10) NULL,
[Social] [int] NULL,
[BadData] [varchar](50) NULL,
CONSTRAINT [PK__CRDefend__3214EC073B95D2F1] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [GROUP3]
) ON [GROUP3]
GO
请求:
SELECT this_.Id as Id16_0_, this_.FirstName as FirstName16_0_, this_.LastName as LastName16_0_, this_.MiddleName as MiddleName16_0_, this_.Race as Race16_0_, this_.Sex as Sex16_0_, this_.BirthDate as BirthDate16_0_, this_.Social as Social16_0_, this_.BadData as BadData16_0_ FROM [CRDefendant] this_ WHERE this_.LastName = @p0 and this_.FirstName like @p1
INDEX:
CREATE INDEX IX_CRDefendant_Name_DOB
ON CRDefendant (LastName ASC, FirstName ASC, BirthDate ASC)
INCLUDE (MiddleName, Race, Sex, Social)
ON GROUP3