SELECT *
FROM Movies
WHERE studioName = ‘Disney’ AND year = 1990;
這些索引每個都有幫助嗎?瞭解SQL中索引的基本知識
CREATE INDEX YearIndex ON Movies(year);
CREATE INDEX StudioIndex ON Movies(studioName);
CREATE INDEX YSIndex ON Movies(year,studioName);
CREATE INDEX SYIndex ON Movies(studioName,year);
如果WHERE子句是year = 1990,每個索引有多大幫助?
年創建索引確實會有所幫助,因爲創建電影的時間很多年,所以搜索會大大減少。
Studioname
會有幫助,但不如一年,因爲有更多的年份比studionames。
year,studioname
在這種情況下,更好的選擇,因爲很明顯,搜索是通過超過前兩次
studioname,year
是好的,但並不像以前一樣好最小化。
如果WHERE子句是年份< 1990,每個索引會有多大幫助?
studioname的索引將比年份索引更有幫助,因爲在這種情況下,我們必須查找比1990年少的所有年份,所以如果我們按年份索引,我們將不得不搜索1990年以後所有年份的路徑,所以我認爲在studioname上索引一年是更好的選擇。
這是想想這個的正確方法嗎?
(year,studioName)和(studioName,year)索引可能是等價的,如果你正在查找它們兩個,並且至少在Postgres中,搜索索引的第一列只比搜索第二個(因爲它可以讀取索引的前綴)。不知道「所有年份比1990年少」是什麼意思。 – Ryan
哪個DBMS? Movies表有多大?每個建議指數的基數是多少? – cschneid
所有年份少於1990年。我認爲每個詞的使用都會解決被誤解的問題。「每年少於1990年」 – daniel