gpt4 book ai didi

sql - 准备好的语句如何工作?说我的查询已编译是什么意思?

转载 作者:行者123 更新时间:2023-12-04 15:35:31 26 4
gpt4 key购买 nike

我不确定我是否理解与速度或效率有关的准备好的陈述。我读到准备好的语句是在数据库服务器上编译的,可以反复使用。

但是,假设我有一个网页。它执行一个查询。下一个人打开页面,相同的查询,只是该用户的不同参数。

在网页的第二次点击中,准备好的语句是否正在查看 dbms 以查看该特定查询是否已存在于数据库服务器上?我不明白说该语句已编译并且可以“一遍又一遍地”运行是什么意思。它不会在每次运行页面时都准备好?

此外,这与 sql 注入(inject)无关。这是我理解的一部分,因为它与编译有关。

谢谢。

编辑:我已经搜索过,但我找不到答案。我只被引导到这个问题。

编辑:根据下面的评论,鉴于我的情况,我看不到任何效率优势。安全是的。整个编译的东西。没有。有没有人可以举出一个场景来作为满足效率问题的例子?

最佳答案

在第一次执行期间创建的查询计划可以被数据库缓存(可能为所有连接到数据库的应用程序提供好处,运行相同的查询)或数据库驱动程序(为应用程序提供好处,如只要它没有重新启动)。每次执行时仍会进行“软解析”,但通常要便宜得多。

请注意,您的里程可能会有所不同,具体取决于数据库类型、驱动程序等。语句缓存通常也是有限的,这意味着只有一定数量的语句将保留在缓存中。

Ask Tom提供了一些关于软解析和硬解析之间差异的答案。

关于sql - 准备好的语句如何工作?说我的查询已编译是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com