estoy manteniendo procedimientos almacenados para SQL Server 2005 y me gustaría poder utilizar una nueva característica en 2008 que permite la sugerencia de consulta: "optimizar para DESCONOCIDO"¿Esta consulta es equivalente a OPTIMIZAR POR DESCONOCIDO en SQL Server 2008?
Parece como si la siguiente consulta (escrito para SQL Server 2005) estima el mismo número de filas (es decir, la selectividad) como si se especifica la opción (OPTIMIZACIÓN dE DESCONOCIDO):
CREATE PROCEDURE SwartTest(@productid INT)
AS
DECLARE @newproductid INT
SET @newproductid = @productid
SELECT ProductID
FROM Sales.SalesOrderDetail
WHERE ProductID = @newproductid
Esta consulta evita descubrimiento de parámetros declarando y el establecimiento de una nueva variable. ¿Es esto realmente una solución de SQL Server 2005 para la función OPTIMIZE-FOR-UNKNOWN? ¿O me estoy perdiendo algo? (Se agradecen los enlaces autoritativos, las respuestas o los resultados de las pruebas).
Más información: Una prueba rápida en SQL Server 2008 me dice que el número de filas estimadas en esta consulta es de hecho el mismo que si se especificara OPTIMIZE FOR UNKNOWN. ¿Es este el mismo comportamiento en SQL Server 2005? Creo que recuerdo haber oído una vez que, sin más información, SQL Server Optimizing Engine tiene que adivinar la selectividad del parámetro (por lo general, al 10% para los predicados de desigualdad). Todavía estoy buscando información definitiva sobre el comportamiento de SQL 2005. No obstante, no estoy seguro de que exista información ...
Más información 2: Para ser claros, esta pregunta solicita una comparación de la sugerencia de consulta DESCONOCIDA y la técnica de enmascaramiento de parámetros que describo.
Es una pregunta técnica, no una cuestión de resolución de problemas. Consideré muchas otras opciones y me decidí por esto. Entonces, el único objetivo de esta pregunta era ayudarme a ganar la confianza de que los dos métodos son equivalentes.
Consulte Kimberly Tripp's articl http://www.sqlskills.com/blogs/kimberly/post/ProcsPSPandDNR.aspx y busque "EXACTAMENTE lo mismo que OPTIMIZAR POR DESCONOCIDO". Estoy dispuesto a confiar en ella :-) –