我今天正在处理一个 10 多年前编写的旧 Delphi 应用程序。应用程序的某些部分包含将在应用程序中构造更新语句并将它们发送到 SQL Server 以运行的组件。
我需要做的工作是尝试加快一些查询。为此,我添加了两个如下所示的索引:
CREATE NONCLUSTERED INDEX [ix_ClientFilerTo0]
ON [ClientTable] ([Client])
INCLUDE ([ClientCol1],[ClientCol2],[ClientCol3] ... Many more columns)
WHERE Client = 0
CREATE NONCLUSTERED INDEX [IX_Client_Status]
ON [OrderTable] ([Client],[Status])
INCLUDE ([OrderCol1],[OrderCol2],[OrderCol3],[OrderCol4])
WHERE [Status] <= 7
GO
当我这样做时,我收到以下错误:
我尝试将这些设置添加到我的索引创建语句中,但没有帮助。
我运行了一个 SQL 配置文件,并且我的应用程序的连接被列出以具有以下设置:
set quoted_identifier off
set arithabort off
set numeric_roundabort off
set ansi_warnings off
set ansi_padding off
set ansi_nulls off
set concat_null_yields_null off
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed
我认为这些设置来自这个应用程序使用的非常旧版本的 BDE。改变它们需要做很多工作(我们正在努力重写这个应用程序)。
有什么方法可以创建索引以使其与具有这些设置的连接一起使用?
笔记:
- 我正在使用 SQL Server 2012。
- 此错误发生在我的 Prod 和非 Prod SQL Server 上
- 此错误发生在许多用户机器上
这是当前在我的订单表上的索引示例:
USE [UseMyDb]
GO
/****** Object: Index [IX_AnotherIndex] Script Date: 10/3/2013 2:56:49 PM ******/
CREATE UNIQUE NONCLUSTERED INDEX [IX_AnotherIndex] ON [OrderTable]
(
[Sequence] DESC
)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 [SomethingIDontUnderstand]
GO