2015-04-14 20 views
0

我有三個表(一切都過於簡單化的問題)比性能更好的雙SQLite的內部連接

Student 
--- 
StudentId (primary key) 
UniversityId (indexed) 
CityId (indexed) 
StudentName 


University 
--- 
UniversityId (primary key) 
UniversityName 


City 
--- 
CityId (primary key) 
CityName 

我想打印出所有學生的名字,但如果名字是一樣的,我想訂購首先由他們所在的城市名稱,然後由大學名稱。

所以,我有一個簡單的查詢,像這樣的:

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 

有沒有改善任何方式的這種表現方式,以及如何?不需要

回答

1

UniversityIdCityId的指標。

的ORDER BY可能與StudentName被索引優化。

+0

感謝您的回答。是的,學生名已被索引,忘記補充。在這種情況下,我真的需要大學和城市表格中的大學名稱和城市名稱,實際上我的列數比上面的例子多得多。那麼,我還能做什麼來忽略其他專欄,並以某種方式加快速度? –

+1

您可以創建覆蓋索引,但這並沒有多大幫助。如果您真的需要更高的速度,那麼優化硬件或軟件配置可能會更有成效。 –

+0

SQLite和Inner Join根本不是朋友.... – Peter