在 SQLite Tcl 接口中缓存准备好的语句

问题描述 投票:0回答:1

这个问题涉及在 Tcl 中正确编码,以最好地利用 SQLite 重置准备好的语句,而不是最终确定它们。

在缓存准备好的语句方面,类似代码之间有什么区别吗?

set ::SQL::QueryName { update ... } dbcmd eval $::SQL::QueryName

dbcmd eval { update ...}
或者简单地说:无论 SQL 字符串以何种方式传递给 SQLite,它都会存储最后 10 个或在 

dbcmd cache size N

 中设置的任何值,最多可达 100?

编码员可以/应该做些什么来帮助 SQLite 在这方面?

感谢您考虑我的问题。

我忘记了我应该添加到这个问题中,使用

:

 符号绑定参数如何影响缓存?例如,如果两个查询相同,除了 WHERE 子句中的 
data_key = :starKey
data_key = :endKey
 之外,那么出于缓存目的,这些查询是否会被视为一个或两个查询?

在执行查询之前可以写

data_key = :dataKey

set dataKey $startKey
set dataKey $endKey

是否有地方列出此类信息?谢谢你。

sqlite tcl
1个回答
0
投票

不需要需要采取任何特殊步骤来缓存 SQLite 的 Tcl 接口中的准备好的语句。如果相关的话,界面库将在幕后为您管理这样的缓存。 (可能不是;语句编译器非常快。)

这是 Tcl 工作方式中一个非常常见的方面:相关的透明缓存(缓存的通常位置位于值实例内部)。这意味着许多程序最终会存储附加到其文字的缓存编译,并且所有这些都不需要用户代码执行任何特殊操作。 (正则表达式以这种方式缓存,大多数评估的脚本片段也是如此。)您不必这样做,但在实践中文字通常会得到更快的处理。

© www.soinside.com 2019 - 2024. All rights reserved.