{"id":1158,"date":"2011-04-14T22:48:44","date_gmt":"2011-04-14T21:48:44","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1158"},"modified":"2011-04-14T22:54:39","modified_gmt":"2011-04-14T21:54:39","slug":"optionrecompile-nem-mukodik","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2011\/04\/14\/optionrecompile-nem-mukodik\/","title":{"rendered":"option(recompile) nem mindig m\u0171k\u00f6dik"},"content":{"rendered":"<p>Hirtelen egym\u00e1s ut\u00e1ni napokon 3 c\u00e9gn\u00e9l \u00e9getett be az SQL Server 2005-t\u0151l l\u00e9tez\u0151 option(recompile), miut\u00e1n nem m\u0171k\u00f6dik.<\/p>\n<p>A hint c\u00e9lja az lenne, hogy a konkr\u00e9t param\u00e9ter\u00e9rt\u00e9kek ismeret\u00e9ben k\u00e9r\u00fcnk egy \u00fajraford\u00edt\u00e1st, \u00edgy az optimizer ki tud dobni felesleges \u00e1gakat a lek\u00e9rdez\u00e9sb\u0151l, ezzel nagyon hat\u00e9kony terveket tud l\u00e9trehozni egyes speci\u00e1lisabb lek\u00e9rdez\u00e9sekhez.<br \/>\nPl. gyakori, hogy a param\u00e9terre csak akkor kell sz\u0171rni, ha nem null, ha null, j\u00f6jj\u00f6n vissza minden sor:<\/p>\n<p>&#8230; where @param is null or oszlop = @param<\/p>\n<p>Ez alapban scan lenne, lass\u00fa. Az option(recompile) hat\u00e1s\u00e1ra azonban ha a @param null, akkor teljesen kiesik a sor, ha nem null, akkor meg leegyszer\u0171s\u00f6dik erre:<\/p>\n<p>&#8230; where oszlop = @param<\/p>\n<p>Ez meg m\u00e1r j\u00f3 kis gyors seek lesz, megfelel\u0151 index eset\u00e9n.<\/p>\n<p>Mi itt a gond? Csak az, hogy ez sok verzi\u00f3n NEM m\u0171k\u00f6dik. Pedig m\u0171k\u00f6d\u00f6tt. :)<\/p>\n<p>Az ok a k\u00f6vetkez\u0151. SQL 2005-ben m\u00e9g nem m\u0171k\u00f6d\u00f6tt. 2008-ra megcsin\u00e1lt\u00e1k, ment, csakhogy egy igen durva <a href=\"http:\/\/connect.microsoft.com\/SQLServer\/feedback\/details\/386810\/concurrent-use-of-option-recompile-causes-incorrect-results\">bugot is beleszereltek<\/a>: ha t\u00f6bben hajtanak v\u00e9gre ilyen hintelt lek\u00e9rdez\u00e9st, akkor \u00f6sszekeveredhetnek az eredm\u00e9nyhalmazok. Ez az innye, bazmeg t\u00edpus\u00fa bug. Gyorsan ki ki kommenteltek p\u00e1r sort, mivel megvarrni meg nem olyan egyszer\u0171, mint elrontani. \u00cdgy ez most nem megy az \u00fajabb SQL Servereken.<br \/>\n<a href=\"http:\/\/www.sommarskog.se\/weblog.html\">Erland <\/a>bar\u00e1tunk szerint az R2 RTM NEM tartalmazza m\u00e9g a jav\u00edtott verzi\u00f3t (magyarul helyesen m\u0171k\u00f6dik, nem nem gyors\u00edt).<br \/>\nViszont ez az R2 <a href=\"http:\/\/support.microsoft.com\/kb\/981355\">CU1<\/a> m\u00e1r jav\u00edtja.<br \/>\n<a href=\"http:\/\/support.microsoft.com\/kb\/976603\">Ezen doksi<\/a> szerint m\u00e1r 2008-hoz is van jav\u00edt\u00e1s, a <a href=\"http:\/\/support.microsoft.com\/kb\/975977\/LN\">CU5-ben<\/a>.<\/p>\n<p>M\u00e1r csak le k\u00e9ne cser\u00e9ni a c\u00e9geknek a 2005-\u00f6t. :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hirtelen egym\u00e1s ut\u00e1ni napokon 3 c\u00e9gn\u00e9l \u00e9getett be az SQL Server 2005-t\u0151l l\u00e9tez\u0151 option(recompile), miut\u00e1n nem m\u0171k\u00f6dik. A hint c\u00e9lja az lenne,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,4,30,21,58,77],"tags":[],"class_list":["post-1158","post","type-post","status-publish","format-standard","hentry","category-adatbazisok","category-szakmai-elet","category-sql-server","category-sql-server-2005","category-sql-server-2008","category-sql-server-2008-r2"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1158"}],"version-history":[{"count":4,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1158\/revisions"}],"predecessor-version":[{"id":1161,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1158\/revisions\/1161"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}