- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据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/
SQLite Autoincrement(自动递增) SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 AUTOINCRE
我有以下 SQLite 表: CREATE TABLE podcast_search ( _id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
我创建了一个带有自动递增字段的数据库: filecur.execute("CREATE TABLE IF NOT EXISTS File_Data (_FID INTEGER PRIMARY KEY
假设我有一个看起来像这样的模型 Issue: class Issue(models.Model): title = models.CharField(max_length=100) a
我正在尝试使用 fts3 在 sqlite3 中创建一个虚拟表,并将一列作为自动增量,但是在插入值时,该列没有被填充。 代码: CREATE VIRTUAL TABLE contact USING f
我正在寻找一种在 MySQL“CREATE VIEW”中插入一种自动增量列的方法。 我使用的 ORM 有一些限制,其中之一是每个表(或 View )必须只有一个唯一标识符... 无论如何......从
我最近发布了一个应用程序:https://my.kendozone.com在 Laravel 5.3/MySQL 中 我正在获取用户,但一件奇怪的事情是我的用户 ID 没有增加 1。 此处最后 10
我想在行计数器更新时模拟自动增量。 我的触发器是: CREATE DEFINER = CURRENT_USER TRIGGER `db`.`token_AFTER_UPDATE` AFTER UPDA
大家好, 我正在尝试制作一个表,其中包含一堆引用用户的 ID,并且对于每个用户,将有多个帖子也应该有自己的 ID。我的问题是如何制作表格,以便在为某个用户插入记录时,他们的帖子 ID 应递增 1。这意
我正在运行一个 fgetcsv 查询,以将一堆数据从 CSV 导入 WordPress。 我想知道如何从某个数字开始自动递增,例如,从 1000 开始。 $import1="INSERT into w
我搜索过堆栈溢出问题,但找不到解决方案。这是我的 SQLite onCreate 代码。 public void onCreate(SQLiteDatabase database) { Str
我正在使用 OleDb 处理 MS Access 数据库文件。这是片段: OleDbCommand command = oleDbConnection.CreateCommand(); command
我在数据库中有一个表,主键是'ID',我想问一下如何让它成为AUTOINCREMENT 我知道这很容易问,但我不知道我该怎么做。 谢谢 最佳答案 有一个属性“Identity Specificatio
我在 AUTOINCREMENT 附近遇到语法错误。这个错误的原因是什么? CREATE TABLE person ( id INTEGER NOT NULL AUTOINCREMENT,
我想将数据上传到雪花表中。雪花表有一个带 AUTOINCREMENT 的主键字段。 当我尝试在没有主键字段的情况下将数据上传到雪花时,我收到了以下错误消息: The COPY failed with
我正在将数据从 csv 导出到 mysql 数据库中,我希望数据库为每个导入的记录生成一个唯一的 id。我想使用唯一字段在 Crystal 报告中生成收据编号。 你认为最好的方法是什么? 最佳答案 如
刚刚开始使用 Sequelize 并尝试在 SQLite 数据库上设置自动增量列。迁移如下所示: return queryInterface.createTable('Users', { id:
假设我有 1000 万个客户名称,每个名称都与一个或多个地址相关联,我想将数据放入 SQL 数据库中。 我创建了一个 Customer 表和一个 Address 表。 Customer 表包含一个自动
嘿,我制作了一个完整的应用程序,但没有添加自动增量列,但现在我需要此列来指定最大 ID,所以我在我的主 Activity 中创建了我的数据库,就像这样。我如何修改它以添加自动增量 _id 列? db
学习 phonegap 以编写适用于 Android 的基本应用程序。出于这个原因使用 WebSQL,我知道它已被弃用,但它仅适用于 Android 手机且无法缩放,因此此时不会为 polyfill
我是一名优秀的程序员,十分优秀!