{"id":800,"date":"2007-11-14T22:20:17","date_gmt":"2007-11-14T21:20:17","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2007\/11\/14\/sql-server\/besser-nicht-auf-die-angabe-query-cost-verlassen"},"modified":"2007-11-13T18:21:14","modified_gmt":"2007-11-13T17:21:14","slug":"besser-nicht-auf-die-angabe-query-cost-verlassen","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2007\/11\/14\/sql-talk\/sql-server\/besser-nicht-auf-die-angabe-query-cost-verlassen","title":{"rendered":"Besser nicht auf die Angabe &quot;Query cost&quot; verlassen"},"content":{"rendered":"<p>Bei einer Sache bin ich in den letzten Monaten b&#246;se reingefallen. Ich beschreibe das mal hier, vielleicht erspare ich anderen damit Kummer&#8230;<\/p>\n<p>Beim SQL-Server-2005 kann man sich f&#252;r einen oder mehrere SQL-Batches, die man in einem Query-Fenster hat mit einem Klick auf &quot;Include actual query plan&quot; den Zugriffsplan anzeigen lassen. Wenn es mehrere Zugriffspl&#228;ne sind, dann bekommt man pro Query\/Zugriffsplan jeweils oben den Wert &quot;Query cost (relative to the batch)&quot; angezeigt. Leider sind die angegebenen Prozentwerte nicht das, was ich erwartet hatte. <\/p>\n<p>Nehmen wir mal an, es seien 3 Queries, f&#252;r die jeweils die Werte 49%, 42% und 9% angezeigt werden. Dann muss man wissen, dass diese Prozentwerte auf den <strong>gesch&#228;tzen Kosten des Optimizers<\/strong> beruhen. Die echten Zeiten werden nicht gemessen.<br \/>\nDie Prozentwerte beruhen auf den jeweiligen &quot;<em>Estimated Subtree Costs<\/em>&quot; des obersten Knotens des jeweiligen Ausf&#252;hrungsplanes.<br \/>\nIm Beispiel waren das die Werte 0.266, 0.225 und 0.046. <\/p>\n<p>Wegen des Namens &quot;Query cost&quot; dachte ich, es seien die echten Kosten. Es sind aber die gesch&#228;tzten Kosten auf denen der Optimizer seinen Zugriffsplan aufbaut. <\/p>\n<p>Und tats&#228;chlich musste ich erst nachmessen: Die tats&#228;chlich gemessenen Zeiten waren in meinem Beispiel 220ms (estimated 49%), 140ms (estimated 42%) und 343ms (estimated 9%). <\/p>\n<p>Res&#252;mee: Die als &quot;Query cost&quot; angegebenen Werte darf man nur als Hinweis nehmen, wie der Optimizer damit umging (&quot;<em>estimated<\/em>&quot;). Man kann daraus keine Performanceaussagen &quot;der unterste ist der Beste&quot; ableiten&#8230;<\/p>\n<p>Wer mehr dar&#252;ber erfahren will, wird auf dem Blog vom <a href=\"http:\/\/blogs.msdn.com\/sqlqueryprocessing\/archive\/2006\/10\/11\/What-is-this-cost.aspx\">SQL Server Query Processing Team<\/a> f&#252;ndig.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei einer Sache bin ich in den letzten Monaten b&#246;se reingefallen. Ich beschreibe das mal hier, vielleicht erspare ich anderen damit Kummer&#8230; Beim SQL-Server-2005 kann man sich f&#252;r einen oder mehrere SQL-Batches, die man in einem Query-Fenster hat mit einem Klick auf &quot;Include actual query plan&quot; den Zugriffsplan anzeigen lassen. Wenn es mehrere Zugriffspl&#228;ne sind, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/800"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=800"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/800\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=800"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}