sách gpt4 ai đã đi

sql - 动态 SQL 是否比 SQL Server 中的静态 SQL 性能更高?

In lại 作者:行者123 更新时间:2023-12-04 14:22:44 29 4
mua khóa gpt4 Nike

我有一个同事声称动态 SQL 在许多情况下比静态 SQL 执行得更快,所以我经常看到 DSQL 到处都是。除了明显的缺点,比如在运行之前无法检测到错误并且更难阅读,这是否准确?当我问他为什么一直使用 DSQL 时,他说:

Static is preferred when it is not going to prevent cache reuse and dynamic is preferred when static will prevent cache reuse and reuse is desirable.



我问为什么静态 SQL 会阻止缓存重用,他说:

Apparently, when variables are passed to statement predicates it may prevent cache reuse of that execution plan, where DSQL will allow cache reuse in a stored procedure.



因此,例如:
select * from mytable where myvar = @myvar

我不是 SQL Server 执行计划方面的专家,但这对我来说似乎不合理。为什么引擎会在存储过程中的 DSQL 语句中保留统计信息,而不是静态 SQL 语句?

1 Câu trả lời

动态 SQL 的优点是每次运行时都会重新编译查询。这样做的好处是执行计划可以利用表上的最新统计信息和任何参数的值。

除了更具可读性之外,静态 SQL 还具有不需要重新编译的优点——节省了运行查询的步骤(好吧,如果算上解析-->编译-->执行,实际上是两个步骤)。这可能是也可能不是一件好事。

Bạn có thể sử dụng with (recompile) 强制重新编译静态计划。选项。

有时,您需要使用动态 SQL。不过,作为一般规则,在依赖动态 SQL 之前,我会使用编译器提示和其他努力来管理性能。

关于sql - 动态 SQL 是否比 SQL Server 中的静态 SQL 性能更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107224/

29 4 0
Bài viết được đề xuất: ant - 如何使用 ivy 构建 war 而不将 jars 复制到 lib 目录
Bài viết được đề xuất: arrays - 调整向量大小 Julia
Bài viết được đề xuất: python - 使用自定义 pdf 时 stats.rv_continuous 变慢
Bài viết được đề xuất: raku - 从另一个 Perl 6 文件访问 POD
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com