在C#windows应用程序中,我处理HEX字符串。一个HEX字符串将有5-30个HEX部分。
07 82 51 2A F1 C9 63 69 17 C1 1B BA C7 7A 18 20 20 8A 95 7A 54 5A E0 2E D4 3D 29
目前我使用此字符串并使用Convert.ToInt32(string, 16)
将其解析为N个整数。然后我将这些int值添加到数据库中。当我从数据库中提取这些值时,我将它们提取为Ints,然后将它们转换回HEX字符串。
将这些字符串转换为字节然后将它们作为二进制数据类型添加到数据库中是否会更好的性能?
编辑:
5-30个HEX部分对应于特定的表格,其中所有部分组成1个单独部分的记录。例如,如果我有5个HEX值,它们对应于1个记录的5个单独列。
编辑:
澄清(抱歉):
我有9张桌子。每个表都有一组列数。
表1:30
表2:18
表3:18
表4:18
表5:18
表6:13
表7:27
表8:5
表9:11
每个表中的每个列都对应一个特定的HEX值。
例如,我的应用程序将以单字符串格式接收13个HEX组件的“有效载荷”:07 82 51 2A F1 C9 63 69 17 C1 1B BA C7。目前我接受这个字符串并解析各个HEX组件并将它们转换为int,并将它们存储在一个int数组中。然后我获取这些int值并将它们存储在数据库中相应的表和列中。当我读取这些值时,我将它们作为整数然后将它们转换为HEX字符串。
我想知道的是,如果我将HEX字符串转换为字节数组并将字节存储为SQL二进制变量类型。
答案 0 :(得分:4)
就性能而言,你当然应该测试两种方式。
但是,就可读性而言,如果这只是任意数据,我当然建议使用字节数组。如果实际意味着表示整数序列,那很好 - 但为什么你要使用4字节整数的集合来表示任意字节数组?它与其他任何东西都不相符:
我建议用更简单的自然方式编写代码,保持数据接近它真正想要代表的东西,然后测量性能。如果它足够好,那么你不需要再看了。如果不是,那么你将有一个很好的调整基础。
答案 1 :(得分:1)
是的,到目前为止。插入很多行远比插入几行更大。
答案 2 :(得分:1)
数据模型通常不仅取决于您想要写的方式,还取决于您想要查找和读取数据的方式。
一些注意事项:
总而言之,字节数组可能就是您所需要的,但请注意上述注意事项。