sqlite:我应该使用文本列作为主键,还是通过哈希函数转换它?

Chr*_*ris 6 sqlite

我需要使用文本列作为我的sqlite数据库的主键.我也有可能使用哈希函数从我的文本值中获取32位/ 64位int(我想用作主键).所以我可以使用这些int哈希值而不是我的文本值作为主键.但是我需要在表格中另外存储原始文本值.

但是我读到sqlite在内部使用了rowid,所以我不知道使用哈希函数是否会有所帮助.

sqlite会在他们的页面中存储rowid或文本值(当我使用它而不是哈希值时)吗?当它存储文本值时,我认为它可以吹掉页面并使用哈希值会更好.

但我这里缺乏知识.我希望你能帮助我.

ham*_*ene 2

不幸的是,字符串上的任何索引(包括用作主键)都占用双倍空间。一次用于行中的值,第二次用于索引中的值。

因此,如果散列满足您的需求(您不需要排序、按范围查找),那么使用它将是一个好主意。