在SQL Server中使用INDEX

时间:2010-11-23 11:03:58

标签: sql-server indexing

我需要在SQL中创建am索引,但是它需要通过只输入名称的一部分来显示记录。应创建索引以使用部分学生姓名检索学生信息(即如果名称为Johnanesburg;用户可以输入John)

我使用了下面的语法,但它无法正常工作

create index Student ON Student(SName)
SELECT * FROM Student WHERE StRegNo LIKE A% 
go

3 个答案:

答案 0 :(得分:3)

我认为你的问题出在这里:A%

尝试用撇号包装它。

SELECT * 
  FROM Student 
 WHERE StRegNo LIKE 'A%'

此外,在创建索引后,您可能需要GO语句。

答案 1 :(得分:0)

您在SName上创建的索引不会为您在StRegNo创建的select语句提供尽可能多的好处。假设StRegNoStudent表中的主键,您可以尝试:

CREATE CLUSTERED INDEX IX_Student on Student(StRegNo)

SELECT * 
FROM Student 
WHERE StRegNo LIKE 'A%'

但是,您提供的SQL似乎与您的问题不一致。如果您想根据学生姓名进行搜索,那么您可能需要以下内容。

CREATE NONCLUSTERED INDEX IX_Student on Student(SName)

SELECT * 
FROM Student 
WHERE SName LIKE 'A%'

答案 2 :(得分:0)

Ardman对你的查询得到了正确的答案%A => '%一个'。至于索引,这是另一个没有索引可以帮助你的故事,也不能全文搜索。如果你想查找以@A开头的名字(即John%),有序索引可能有所帮助,但除此之外(即%bur%),你将进行全表扫描!