Is there a better way to optimize this query, it gets slower and slower as more records are added to the database.
Thanks
SELECT
VoterID, AnswerID, SectionNumber, AnswerText, SurveyID,
CaseID, versionID, voterAnswerStatus, dateupdated,
recordstatus, modifiedby
FROM
Sample.vts_tbVoterAnswers AS a
WHERE
(dateupdated = (SELECT MAX(dateupdated) AS Expr1
FROM Sample.vts_tbVoterAnswers AS b
WHERE (a.VoterID = VoterID)
AND (a.AnswerID = AnswerID)
AND (a.SectionNumber = SectionNumber)
AND (a.SurveyID = SurveyID)
AND (a.CaseID = CaseID)
AND (a.versionID = versionID)))
AND (recordstatus <> 'D')
SQL Server 2012
Table Definition
[Sample].[vts_tbVoterAnswers](
[VoterAnswerID_PK] [int] IDENTITY(1,1) NOT NULL,
[VoterID] [int] NOT NULL,
[AnswerID] [int] NOT NULL,
[SectionNumber] [int] NOT NULL,
[AnswerText] [ntext] NULL,
[SurveyID] [int] NULL,
[CaseID] [int] NULL,
[versionID] [int] NULL,
[voterAnswerStatus] [varchar](20) NULL,
[dateupdated] [datetime] NOT NULL,
[recordstatus] [varchar](2) NULL,
[modifiedby] [varchar](40) NULL,
[changereason] [varchar](200) NULL,
CONSTRAINT [PK_vts_tbVoterAnswers] PRIMARY KEY CLUSTERED
(
[VoterAnswerID_PK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Hope this helps
Here are the Indexes associated with query.
CREATE UNIQUE NONCLUSTERED INDEX [NonClusteredIndex-20150203-143420] ON [Sample].[vts_tbVoterAnswers]
(
[AnswerID] ASC,
[VoterID] ASC,
[SectionNumber] ASC,
[SurveyID] ASC,
[CaseID] ASC,
[versionID] ASC,
[recordstatus] ASC,
[dateupdated] ASC,
[voterAnswerStatus] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [Sample].[vts_tbVoterAnswers] ADD CONSTRAINT [PK_vts_tbVoterAnswers] PRIMARY KEY CLUSTERED
(
[VoterAnswerID_PK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
USE [AdjudicateV3]
GO
/****** Object: Index [TBVOTER_DECISION_IDX] Script Date: 7/16/2015 12:27:20 PM ******/
CREATE NONCLUSTERED INDEX [TBVOTER_DECISION_IDX] ON [Sample].[vts_tbVoterAnswers]
(
[recordstatus] ASC
)
INCLUDE ( [VoterID],
[AnswerID],
[SectionNumber],
[SurveyID],
[CaseID],
[versionID],
[dateupdated]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
USE [AdjudicateV3]
GO
/****** Object: Index [TBVOTERANSWERS_CASEID_INX] Script Date: 7/16/2015 12:27:38 PM ******/
CREATE NONCLUSTERED INDEX [TBVOTERANSWERS_CASEID_INX] ON [Sample].[vts_tbVoterAnswers]
(
[AnswerID] ASC,
[recordstatus] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
USE [AdjudicateV3]
GO
/****** Object: Index [TBVOTERSANSWERS_PK] Script Date: 7/16/2015 12:27:51 PM ******/
CREATE NONCLUSTERED INDEX [TBVOTERSANSWERS_PK] ON [Sample].[vts_tbVoterAnswers]
(
[CaseID] ASC,
[recordstatus] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
USE [AdjudicateV3]
GO
/****** Object: Index [vts_tbVoterAnswers_PK] Script Date: 7/16/2015 12:28:10 PM ******/
CREATE UNIQUE NONCLUSTERED INDEX [vts_tbVoterAnswers_PK] ON [Sample].[vts_tbVoterAnswers]
(
[SurveyID] ASC,
[CaseID] ASC,
[versionID] ASC,
[VoterID] ASC,
[AnswerID] ASC,
[dateupdated] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
GO