我有一个具有以下架构的表
Users(
Id int PK,
FirstName varchar(255),
SurName varchar(255) ,
UserName varchar(255),
City varchar(255) ,
Country varchar(255))
我的应用程序涉及搜索FirstName
、SurName
以及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)