Java 检索记录时MySql数据库的ArrayList性能

Java 检索记录时MySql数据库的ArrayList性能,java,mysql,arraylist,Java,Mysql,Arraylist,我有一个LoginID数据库,可以容纳1000个用户。现在要检查用户是否存在,我所做的是将数据库的所有LoginID值存储到arraylist中,而不是检查它是否存在或不使用 代码: 这是实现我期望的结果的好方法吗?我的备选方案是什么……如果我的身材进一步增长,它会影响我的表现吗。。?? 我正在使用MySql和JDBC。尝试使用哈希集而不是ArrayList 集合不允许重复,并且其结构可以更快地查找。不要使用ArrayList进行包含的搜索。这是O(n)性能。相反,请使用具有O(1)查找的哈希集

我有一个LoginID数据库,可以容纳1000个用户。现在要检查用户是否存在,我所做的是将数据库的所有LoginID值存储到arraylist中,而不是检查它是否存在或不使用

代码:

这是实现我期望的结果的好方法吗?我的备选方案是什么……如果我的身材进一步增长,它会影响我的表现吗。。??
我正在使用MySql和JDBC。

尝试使用哈希集而不是ArrayList


集合不允许重复,并且其结构可以更快地查找。

不要使用
ArrayList
进行
包含的
搜索。这是O(n)性能。相反,请使用具有O(1)查找的哈希集

但是,最好不要首先查询所有行。只需提出您的疑问:

SELECT COUNT(*) FROM users WHERE login_id = ?

然后查看结果是否为0。

该解决方案无法很好地扩展到超大数据集,因为使用contains()仍有很长的O(N)时间

您也可以轻松地将当前loginId传递给存储过程。。。然后返回第二个条件查询所需商品的附加数据集


这将节省您访问数据库的时间,并节省您在列表上迭代N次以查找您可以在查询中找到的内容的时间。

我将使用常规sql选择并检查是否有任何结果

SELECT LOGIN_ID.ID FROM LOGIN_ID WHERE ID = 'loginid'

这样,数据库可以优化和缓存查询,并利用列上的任何索引。另外,您将只点击id列,而不是loginID表中的每一列。

如果loginID不存在,上面的语句将返回什么?..@RanRag它将不会返回任何记录。如果您对jdbc调用使用上述sql,并且loginID不存在,那么您的while循环将永远不会被调用。您可以捕获此情况并进行相应处理。@Marcelo那么,我如何检查它是否没有返回任何记录……您是否可以向我显示执行此操作的if/else条件……如果我使用ResultSet result=statement.executequery(“选择COUNT(*)FROM users WHERE login_id=?”)..如果loginid不存在,结果将包含什么…?@RanRag:0如果ID不存在;如果是,则为1或多个(如果ID列是唯一的,则为1)。
SELECT LOGIN_ID.ID FROM LOGIN_ID WHERE ID = 'loginid'