在过程创建或使用 UPDATE STATISTICS 语句进行最后的手动重新编译时,数据库服务器将冻结用于优化 SPL 例程中 SQL 语句 的 PDQ 优先级。可以更改 PDQPRIORITY 的客户机值。
要更改 PDQPRIORITY 的客户机值,请将 SET PDQPRIORITY 语句嵌入您的 SPL 例程的主体中。
数据库服务器用来优化或重新优化 SQL 语句的 PDQ 优先级值是 SET PDQPRIORITY 语句设置的值,该语句必须已在相同的过程中执行。如果尚未执行这样的语句,将使用最后一次编译或创建过程时生效的优先级值。
当一个过程正在执行时,在该过程外部当前有效的 PDQ 优先级值将会在过程内被忽略。
CREATE PROCEDURE my_proc (a INT, b INT, c INT) Returning INT, INT, INT; SET PDQPRIORITY 0; ... SET PDQPRIORITY 85; SELECT ...(很大的复杂的 SELECT 语句) SET PDQPRIORITY 0; ... ;