【问题标题】:Decrease in JSON to SQL import time - Why?减少 JSON 到 SQL 的导入时间 - 为什么?
【发布时间】:2018-06-04 04:31:27
【问题描述】:

所以我将 JSON 文件导入 SQLite 数据库。起初,我将 JSON 对象导入到一个看起来有点像这样的表中:

CREATE TABLE table_name (
    column1 STRING,
    column2 STRING,
    column3 STRING,
    column1 STRING,
    column2 INT,
    column3 STRING,
);

由于某种原因,程序导入数据需要很长时间(JSON 文件非常大),所以我正在研究减少导入时间的选项。我在表上添加了这样的约束:

CREATE TABLE table_name (
    column1 NOT NULL PRIMARY KEY,
    column2 NOT NULL,
    column2 NULL,
    column2 TEXT NULL,
    column3 INT NOT NULL,
    column2 NOT NULL,
);

突然之间,导入 JSON 的时间几乎减少了一半。那么我的问题是为什么导入时间有所改善?约束不只是假设保持数据库“安全”或定义一些业务逻辑吗?

【问题讨论】:

  • 你是如何插入行的? SQLite 对 VARCHAR(10) 的处理与对 STRING 的处理没有任何不同。唯一的主键也是多余的,因为主键已经是唯一的。而 NOT NULL 只会导致它在允许插入成功之前检查列值是否不为 NULL。这些都不能解释您报告的差异。
  • @DanD。是的,你是对的,所以我删除了 VARCHAR (更新的问题,还添加了所有列类型)。尽管如此,它仍然通过添加 NOT NULL 等约束来缩短导入时间。
  • @DanD。我正在为两个示例执行相同的行插入语法
  • 我认为 Sqlite 中不存在数据类型 STRING。而且您将很难创建重复的列名。所以我们不得不说一下代码之间的区别,两者都不会运行。

标签: sql json sqlite


【解决方案1】:

如果没有人有更好的答案,我的猜测是该行占用的空间更少,这使得在数据库中插入和查找重复项变得更容易

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多