【问题标题】:Accesing to sqlite shell from lazarus to run a sql script从 lazarus 访问 sqlite shell 以运行 sql 脚本
【发布时间】:2013-12-03 00:25:46
【问题描述】:

我在 lazarus 有一个程序,它从 mysql5 数据库服务器读取和处理数据,然后使用这些数据在 sqlite 中创建一组表以在 android 应用程序中使用它,在这组表中有一个记录的数量大约是 12000,当我尝试使用像 TSqlScript 一样的 lazarus 中的 Sqlite3 数据访问对象来创建这个表时,这个创建脚本需要很长时间大约 8-15 分钟,但是用 sqlite shell 命令行执行这个脚本只需要几秒钟,我如何使用 lazarus 的 shell sqlite3 弹出这个脚本。

【问题讨论】:

标签: sqlite shell lazarus


【解决方案1】:

当您不使用显式事务时,SQLite 会自动将每个 SQL 语句包装到一个事务中,如果您使用许多语句,这会导致可怕的开销。

围绕整个脚本显式使用单个事务。

【讨论】:

  • 我使用的是 TSQLite3Connection 和 TSQLScript 组件,并在脚本开头添加 BEGIN TRANSACTION;并在脚本 COMMIT 结束时;但是当我调用方法 SQLScript1.Execute;这需要很长时间,完成后不会创建任何东西,但是当我从 SQLite 专家个人运行脚本时,只需要几分钟
  • 是的,我在java中尝试过,使用beign transaction和End Transaction without transaccions时速度非常快,但在lazarus中速度没有变化
猜你喜欢
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多