0
У меня есть три таблицы (все упрощено для вопроса)Лучшая производительность, чем двойная SQLite внутреннего соединение
Student
---
StudentId (primary key)
UniversityId (indexed)
CityId (indexed)
StudentName
University
---
UniversityId (primary key)
UniversityName
City
---
CityId (primary key)
CityName
Я хочу, чтобы напечатать все имена студентов, но если имена совпадают, я хочу заказать сначала от CityName, откуда они, а затем от UniversityName.
Итак, у меня есть простой запрос, как это:
select s.* from student s
inner join university u on s.UniversityId = u.UniversityId
inner join city c on s.CityId = c.CityId
order by s.StudentName asc, c.CityName asc, u.UniversityName asc
Есть ли способ улучшить производительность этого никак, и каким образом?
Спасибо за ваш ответ. Да, StudentName уже проиндексирован, забыл добавить это. В этом случае мне действительно нужно просто имя UniversityName и CityName из таблиц университета и города, и на самом деле у меня гораздо больше столбцов, чем в приведенном выше примере. Итак, я ничего не могу сделать, чтобы, возможно, игнорировать остальные столбцы и как-то ускорить процесс? –
Вы можете создать индексы покрытия, но это не поможет. Если вам действительно нужна более высокая скорость, может быть более продуктивным оптимизировать аппаратное обеспечение или конфигурацию программного обеспечения. –
SQLite и Inner Join не являются друзьями вообще .... – Peter