У меня есть две таблицы базы данных:
Города со столбцами:
Country_Code | City_Code | City_Name
Страны со столбцами
Country_Code | Country_Name
На основе нескольких символов, введенных пользователем, он проверяет столбец City_Name
, чтобы возвращать результаты для заполнения поля автозаполнения City
.У результата должны быть код города, название города, код страны и название страны, поэтому необходимо объединение.
Я использую запрос
SELECT TOP 10
ci.Country_Code, ci.City_Code, ci.City_Name, co.Country_Name
FROM
Cities ci
LEFT OUTER JOIN
Countries co ON ci.Country_Code = co.Country_Code
WHERE
ci.City_Name LIKE '@CityName'
ORDER BY
ci.City_Name
Результаты Iget верны, но выполнение запроса занимает много времени.Из того, что я понимаю, сначала результаты содержат объединение обеих таблиц, затем включается предложение where, чтобы получить только конкретные строки, упорядоченные по названию города и возвращенные 10 лучших результатов.
У меня вопрос, есть ли способ ускорить запрос.Проверено ли условие where, а затем выполняется только объединение, лучше выполнить его только для 10 лучших результатов?Я пытался вставить свое предложение WHERE
в предложение ON
, но это дало неправильные результаты.
РЕДАКТИРОВАТЬ: @CityName содержит 2-3 символа, введенных пользователем, а затем "%".