gpt4 book ai didi

oracle - 如何将 Oracle 绑定(bind)变量与 Delphi 的 SimpleDataSet 一起使用?

转载 作者:行者123 更新时间:2023-12-03 18:50:24 24 4
gpt4 key购买 nike

我有一个 Oracle 9 数据库,我的 Delphi 2006 应用程序从中读取数据到 TSimpleDataSet使用这样的 SQL 语句(实际上它更复杂,当然):

select * from myschema.mytable where ID in (1, 2, 4)

我的应用程序在一天中经常启动并执行此查询,每次都在 in 中使用不同的值。条款。

我的 DBA 通知我,这会在数据库服务器上造成过多的负载,因为每次运行都会重新解析查询。他们建议使用 bind variables而不是在客户端上构建 SQL 语句。

我熟悉在 Delphi 中使用参数化查询,但是从上面链接的文章中,我感觉到绑定(bind)变量并不完全是什么。此外,我需要这些准备好的语句才能在应用程序的不同运行中工作。

有没有办法准备一个包含 in 的语句?子句在数据库中执行一次,然后使用从 TSimpleDataSet 传入的不同参数执行它所以每次运行我的应用程序时都不需要重新解析?

最佳答案

我的回答与Delphi没有直接关系,但一般来说这个问题。您的问题是可变大小的列表中的问题。 Tom Kyte of Oracle有一些您可以使用的建议。本质上,您正在创建太多独特的查询,导致数据库进行大量的硬解析。这将不必要地增加 CPU 消耗(和 DBA 血压)。

通过使您的查询静态,它可以通过软解析或根本不解析!然后DB可以缓存执行计划,DBA可以处理更“稳定”的SQL,整体性能应该会提高。

关于oracle - 如何将 Oracle 绑定(bind)变量与 Delphi 的 SimpleDataSet 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471133/

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