我有这个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