我有 1 个可以返回超过 1000 条记录的存储过程。
我想在我的搜索表列上创建临时非集群索引,因为我听说非集群索引会加快数据检索(SELECT)操作并减慢数据更新(更新和删除)操作并在我之后删除该非集群索引操作已经完成。
就像我有 2 个表 UserDetails 和 CategoryMaster 以及我的搜索字段:
- 用户详细信息(服务描述、技能)
- 类别大师(姓名)
这是我的存储过程:
ALTER PROCEDURE [dbo].[SearchworkerProcedure1]
@SearchKeyword nvarchar(70)
AS
DECLARE @Keywords TABLE
(
sno INT IDENTITY(1,1) PRIMARY KEY,
keyname VARCHAR(100),
Shortkeyname as substring(keyname,0,5)
)
DECLARE @SearchKeywordTable TABLE
(
[VendorId] [int] NULL,
[ServiceDescription] [nvarchar](max) NULL,
[Skills] [nvarchar](max) NULL
)
INSERT INTO @Keywords SELECT * FROM [splitstring_to_table](@SearchKeyword,',')
BEGIN
--My Query
END
我的UserDetails创建查询:
CREATE TABLE [dbo].[UserDetails](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Fullname] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_UserDetails] 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 [PRIMARY]
) ON [PRIMARY]
那么是否可以在存储过程中创建临时非集群索引并在选择操作后删除该非集群索引????