我有這個bean /表「用戶信息」列id,用戶名和twitchChannel。 對於大多數用戶信息,twitchChannel列將爲空。我正在瀏覽表中的每個userinfo實體並搜索列twitchChannel,如果列不爲空,我將twitchChannel放入數組中。使用索引可以使這個請求更有效嗎?
這是我的要求是什麼樣子:
"SELECT ui FROM Userinfo ui WHERE ui.iduserinfo=:id"
這是非常低效的,因爲我經歷的每一個實體,即使是那些有一個空twitchChannel,我不感興趣的那些。
這是java,但我評論每一行,因此很容易理解那些不知道它的人。
while (true) { // I'm going through the table in an infinite loop
int id = 0; //id that is incremented for searches
Userinfo ui; // this will be an object that will hold the result of my query
do {
ui = ups.getUserInfo(id); // this execute the query I posted above
id++; //incrementing id for next search
if (ui.getTwitch() != null) { // if the search didn't return null
twitchChannels.add(ui.getTwitch()); // put my twitch in an array
}
} while (ui != null);
}
所以目前我正在經歷我的表中的每個實體,即使是那些有空抽搐的實體。根據我的理解,可以通過索引加速進程。
CREATE INDEX twitchChannel
ON Userinfo (twitchChannel)
所以像這樣的事情會有一個非空twitchChannel表。我如何通過上面這張桌子循環播放? 它會以與java持久性相同的方式工作嗎?
但我必須指定像這樣的索引:CREATE INDEX twitchChannel ON Userinfo(twitchChannel)?它自動使用索引嗎?我不必在我的查詢中指定它 – Ced
@Ced ...是的,查詢會自動使用索引,但索引並不總是被使用,根據數據的不同,90%或99%的索引可能必須是NULL。 –
謝謝。好吧,這將是我的用戶庫插入的字段。至少我希望沒有99%的空洞。但這並不重要。謝謝。 – Ced