Zac*_*ach -1 sql database sqlite relational-database
我知道通常最好的方法是对主键使用INTEGER字段,但是不幸的是,由于使用的API,我只能使用格式为CHAR_INT的主键(例如:ABC_12345)。
我将拥有大量数据(10亿条记录),并且优先考虑查询和插入速度,使用CHAR_INT主键是否会对速度产生较大影响?还是相对可以忽略不计?
另外,为字符串的CHAR部分创建数字ID会更有效吗?因此,使用前面的示例:ABC_12345将变成类似于1_12345。我知道它们都是字符串,只是想知道仅使用数字是否有效率。
我正在使用SQLite。
谢谢!
据我所知,没有内置的数据类型“ CHAR_INT”类型。
但是,SQLite在键入时非常灵活,并且允许将任何字符串作为类型的名称。SQLite不是强类型的,因此该值似乎存储为字符串。
数字索引更有效。一个重要原因是数字是固定长度的。字符串是可变长度的,当在索引中存储键值时会增加开销。另一个原因是硬件在支持数字比较方面做得更好。当考虑字符集和排序规则时,字符串比较变得更加复杂。
也就是说,与使用索引的好处相比,搜索和维护索引的开销实际上很小。因此,我不必担心索引仅包含字符串。但是,我将更加担心施加此类限制的工具。您应该能够在表中选择所需的键。