Использование INDEX в SQL Server - PullRequest
2 голосов
/ 23 ноября 2010

Мне нужно создать индекс am в SQL, однако он должен отображать записи, вводя только часть имени. Индекс должен быть создан для извлечения информации об ученике, используя часть имени ученика (т. Е. Имя, если Джонанесбург; пользователь может ввести Джона)

Я использовал приведенный ниже синтаксис, но он не будет работать

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

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Я думаю, что ваша проблема здесь:%

Попробуйте обернуть его в апострофы.

SELECT * 
  FROM Student 
 WHERE StRegNo LIKE 'A%'

Также вам может потребоваться оператор GO после создания индекса.

0 голосов
/ 23 ноября 2010

Ардман правильно понял ваш запрос% A => '% A'.Что касается индекса, то это еще одна история, с которой ни один индекс не может вам помочь в то время, как и полнотекстовый поиск.Если вы хотите искать имена, начинающиеся с @A (т. Е. John%), упорядоченный индекс может помочь, но в противном случае (т. Е.% Bur%), вам нужно выполнить полное сканирование таблицы!

0 голосов
/ 23 ноября 2010

Индекс, который вы создаете более SName, не даст столько преимуществ для оператора select, который вы используете, чем оператор, созданный для StRegNo. Предполагая, что StRegNo является первичным ключом в таблице Student, вы можете попробовать:

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%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...