我在SQLite中有一个包含对象物理ID的列。
此物理ID是16个字节的信息。我想在此列上创建索引以优化查询的性能。
此列的最佳数据类型是什么,索引具有最佳性能?我应该使用包含32个char长十六进制,int8(16)或其他数据类型的文本吗?
答案 0 :(得分:1)
不要使用包含hex的文本。我敢打赌它比BLOB慢(SQLite支持BLOB PRIMARY KEY)。更不用说它的尺寸增加了一倍。
SQLite只有一种整数类型。 (没有int8或int16。)
如果您的物理ID是整数,我建议使用INTEGER PRIMARY KEY。在SQL语句中嵌入值,将值绑定到SQL语句或从查询结果中获取值时,它比BLOB更方便。
答案 1 :(得分:0)
通常,使用基于整数的索引可以获得更好的性能。但是在这种特定情况下,您将看不到任何好处。 SQLite只存储最多8个字节的整数。任何更大的东西都将被存储为文本。
在内部,text和blob以类似的方式存储(文本遵循数据库编码,blob按原样存储。)两者都可以编入索引,并且您将看到两者之间的类似性能。根据您的架构,数据和查询,两者之间的任何差异可能无法以有意义的方式显着。在这一点上,选择将真正归结为您个人更容易合作。