gpt4 book ai didi

performance - SQLITE:有关使用AUTOINCREMENT的最佳实践

转载 作者:行者123 更新时间:2023-12-03 14:59:04 25 4
gpt4 key购买 nike

根据official manual

“ AUTOINCREMENT关键字强加了额外的CPU,内存,磁盘空间和磁盘I / O开销,如果没有严格要求,则应避免使用它。通常不需要。”

所以最好不要使用它?您是否有使用隐式rowid相对于AUTOINCREMENT的基准?

最佳答案

根据文档中的建议,最好不要使用AUTOINCREMENT,除非您需要确保rowid的别名(又名id)大于已添加的别名。但是,(在正常使用中)这是一个有争议的问题,因为即使没有AUTOINCREMENT,也要等到达到9223372036854754775807行之后,才会产生更高的rowid / id。

如果确实达到了9223372036854754775807的id / rowid,那么如果您已对AUTOINCREMENT进行编码,就是这样,因为将发生SQLITE_FULL异常。虽然没有AUTOINCREMENT,但会尝试获取未使用的ID /行。

AUTOINCREMENT向sqlite_sequence添加一行(如果需要,则为表),该行记录分配的最高ID。使用和不使用AUTOINCREMENT的区别在于,引用了sqlite_sequecence表,而没有使用AUTOINCREMENT的情况下则不引用。因此,如果删除具有最高ID的行,则AUTOINCREMENT从sqlite_sequence表中获得有史以来分配的最高ID(并且用户使用该ID或max(rowid)中的较大者),而不会这样做,因此它将使用该行中表中的最高ID正在插入(相当于max(rowid))。

通过有限的测试,发现根据What are the overheads of using AUTOINCREMENT for SQLite on Android?的开销为8-12%。

关于performance - SQLITE:有关使用AUTOINCREMENT的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com