gpt4 book ai didi

sql-server - 带有通配符的 LIKE 的 Cfqueryparam 比不使用 cfqueryparam 慢

转载 作者:行者123 更新时间:2023-12-01 05:29:41 24 4
gpt4 key购买 nike

[编辑:根据 Leigh 的建议进行编辑

我一直有使用的问题

 column like <cfqueryparam cfsqltype="cf_sql_varchar" value="abc%" />

比大约 30ms 慢。
column like 'abc%'

在缓存计划之前,两个查询大约同时运行约 60 毫秒。后续命中导致不使用 cfqueryparam 的查询为 1 毫秒,使用 cfqueryparam 的查询为 30 毫秒。 DSN 正在发送 unicode,列类型为 nvarchar。我没有注意到这种带有“=”的行为,只是 LIKE 运算符。此特定列未编入索引。

有谁知道为什么会发生这种行为?

最佳答案

在使用非参数化参数进行查询时,我已经看到与 sql server 类似的行为。据我所知查询

select x from y where x.a like 'dog'

永远不会改变表 y 中的计划、统计或输出数据不会被修改。与此查询相比,SQL Server 可以并且确实会检测到这一点并将计划/统计信息/输出存储更长的时间:
select x from y where x.a like @p1

任何可能的参数值之间没有任何共同之处。你实际上是说在计划被缓存后你会看到性能差异,那是因为不仅仅是计划被缓存。

我还看到过这样一种情况,查询优化器从未对参数化查询使用有效索引 - 对于非参数化查询,它使用它 - 并且必须使用索引查询提示。

关于sql-server - 带有通配符的 LIKE 的 Cfqueryparam 比不使用 cfqueryparam 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11906542/

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