在文本列上创建索引 SQL Server 2012



我有一个具有以下架构的表

Users(
Id         int PK,
FirstName  varchar(255),
SurName    varchar(255) ,
UserName   varchar(255),
City       varchar(255) ,
Country    varchar(255))

我的应用程序涉及搜索FirstNameSurName以及FirstName+SurName如何创建索引,以便它提供最优化的计时性能。

是下面给出的索引将解决的目的

CREATE NONCLUSTERED INDEX 
USR_FirstNameSurName_IDX 
ON dbo.Users(FirstName,SurName)

PS:由于目录维护开销,我无法使用全文搜索。

在表上创建Index绝对会在最佳时间内提高数据检索的性能。创建索引意味着,它将重新组织该表上的Column数据。您的方法很好,除了Indexing之外,没有其他方法可以根据FirstName和最佳SurName检索数据。还有一件事 仅检索所需的Columns,而不是使用Select列表中的*

我期待您的查询如下。

SELECT Id, FirstName, SurName
FROM Users
WHERE (FirstName LIKE 'D%' OR SurName LIKE 'D%')

使用计算列

CREATE table Users(
Id         int primary key identity
,FirstName  varchar(255)
,SurName    varchar(255)
,UserName   varchar(255)
,City       varchar(255)
,Country    varchar(255)
,FullName  AS LTRIM(RTRIM(FirstName)) + ' ' + RTRIM(LTRIM(SurName)) 
)
Insert Users(FirstName,  SurName) Values('FirstName' , 'SurName') 
Insert Users(FirstName,  SurName) Values('Siddharth' , 'Bharadwaj')
Insert Users(FirstName,  SurName) Values('Shyam' , 'Vemula')

SELECT FirstName, SurName, FullName FROM Users where FullName like ('%th Bh%')
FirstName                                          SurName                                            FullName
-------------------------------------------------- -------------------------------------------------- -----------------------------------------------------------------------------------------------------
Siddharth                                          Bharadwaj                                          Siddharth Bharadwaj
(1 row(s) affected)
SELECT FirstName, SurName, FullName FROM Users where FullName like ('%Test%')
FirstName                                          SurName                                            FullName
-------------------------------------------------- -------------------------------------------------- -----------------------------------------------------------------------------------------------------
(0 row(s) affected)

如有必要,您可以创建索引

create index akUsersFullName on Users (FullName)

最新更新