SQLite .net 提供程序和 "prepare statement" 功能
SQLite .net provider & "prepare statement" functionality
前言
可以找到对 SQLite "Prepared Statement" 功能 here 的描述。
SQLite 命令(.NET 的 SQLite 提供程序) 有一个方法 "Prepare",其描述如下:
Summary:
Does nothing. Commands are prepared as they are executed
the first time, and kept in prepared state afterwards.
问题
- 一般来说,SQLite 的 Prepared Statement 功能是否提高了查询的整体性能,它被一遍又一遍地执行?
- 准备好的语句保存在哪里?我如何确定这些准备好的语句实际上正在被使用?
- 我如何确定 Dapper 正在使用这些语句? (在我的例子中,我使用 Dapper 运行 同一个查询数百次。根据传递的参数,查询在每次调用中获取 10k 个结果)。
编辑:
刚找到 this,这部分回答了我的问题。尽管如此,如果我需要自己构建 DbCommand,然后将其保存在某个地方,我该如何将命令与 Dapper 一起使用?
说 Dapper 目前没有调用 Prepare()
是完全正确的。
您可以阅读详细说明here
长话短说,主要原因是:Dapper 真的、真的不想存储您的连接,因为它在设计时考虑了高并发性,并且通常在 DbConnection 短暂存在的场景中工作
前言
可以找到对 SQLite "Prepared Statement" 功能 here 的描述。
SQLite 命令(.NET 的 SQLite 提供程序) 有一个方法 "Prepare",其描述如下:
Summary: Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards.
问题
- 一般来说,SQLite 的 Prepared Statement 功能是否提高了查询的整体性能,它被一遍又一遍地执行?
- 准备好的语句保存在哪里?我如何确定这些准备好的语句实际上正在被使用?
- 我如何确定 Dapper 正在使用这些语句? (在我的例子中,我使用 Dapper 运行 同一个查询数百次。根据传递的参数,查询在每次调用中获取 10k 个结果)。
编辑:
刚找到 this,这部分回答了我的问题。尽管如此,如果我需要自己构建 DbCommand,然后将其保存在某个地方,我该如何将命令与 Dapper 一起使用?
说 Dapper 目前没有调用 Prepare()
是完全正确的。
您可以阅读详细说明here
长话短说,主要原因是:Dapper 真的、真的不想存储您的连接,因为它在设计时考虑了高并发性,并且通常在 DbConnection 短暂存在的场景中工作