我在一个连接到同一台机器上的sql server的java程序中运行它。 基本上我试图打电话给某个' String'这可以通过字符串self或它已经存储的长'(int64)来识别,这是一种存储与字符串相关的唯一long的方法。
因此,在这种情况下,我的问题是,在SQL查找中进行长时间的比较是否会更快,或者与字符串比较相比还不是很重要。
SELECT * FROM playerAccount WHERE playerName = {string in Java}
或
SELECT * FROM playerAccount WHERE nameHash = {long in Java}
提前致谢;)
答案 0 :(得分:2)
比较操作本身可以忽略不计。但是,通常在计算机代码中,long的比较将使用比字符串比较更少的周期。
原因是比较数值中的位是明确的,代码不需要担心值的长度。比较字符串时,底层代码必须解析"字符串,逐个字符,进行比较,找出它们的结束位置,并处理整理和字符页。
但是,这相当不重要。对于速度,您需要一个索引。虽然使用数值的索引可能比使用字符串的索引快,但这是选择使用哪个错误的标准。您的代码应该设计为正常运行并且可维护。令人怀疑的是,这种优化对于实现现实世界的目标是必不可少的。
答案 1 :(得分:0)
通常,比较长值比比较字符串值更快。 如果string和long存储在数据库中,问题不是比较,而是索引的存在与否。
因此,更好的解决方案是将long值与索引数据库一起使用。
请注意,如果" nameHash"是字段" playerName"的hashCode。两个搜索不必返回相同的记录,实际上两个具有不同名称的玩家可能具有相同的hashCode,因此请准确考虑您的需求并最终更新代码。