<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Parameter Sniffing και USE PLAN Query Hint</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21336.aspx</link><pubDate>Wed, 29 Nov 2006 00:32:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21336</guid><dc:creator>sql100</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21336.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21336</wfw:commentRss><description>&lt;P&gt;Έχω στο σύστημά μου μια stored procedure (που περιέχει 2 select)&amp;nbsp;η οποία κάποιες στιγμές&amp;nbsp;τρέχει πολύ αργά. Αφού το έψαξα, διαπίστωσα ότι μάλλον αυτό οφείλεται σε parameter sniffing. &lt;/P&gt;
&lt;P&gt;Αυτό που παρατήρώ και μου κάνει εντύπωση είναι ότι εκτελώντας&lt;/P&gt;
&lt;P&gt;SELECT&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;sys.dm_exec_cached_plans&lt;/FONT&gt;&lt;FONT size=2&gt; decp&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;CROSS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;APPLY&lt;/FONT&gt;&lt;FONT size=2&gt; sys.dm_exec_query_plan&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;decp&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;plan_handle&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; deqp&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;CROSS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;APPLY&lt;/FONT&gt;&lt;FONT size=2&gt; sys.dm_exec_sql_text&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;DECP&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;plan_handle&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;as&lt;/FONT&gt;&lt;FONT size=2&gt; FFF&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;INNER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;sys.objects&lt;/FONT&gt;&lt;FONT size=2&gt; so&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;ON&lt;/FONT&gt;&lt;FONT size=2&gt; deqp&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;objectid &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;object_id&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;name&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'mySP_Name'&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;βρίσκω για την stored procedure 2 εγγραφές δηλ &lt;STRONG&gt;2 διαφορετικά&lt;/STRONG&gt; execution plans. Είναι φυσιολογικό αυτό και αν όχι από τι προκαλείται?&lt;/P&gt;
&lt;P&gt;Πώς μπορώ να χρησiμοποιήσω την &lt;STRONG&gt;USE PLAN&lt;/STRONG&gt; ή την &lt;STRONG&gt;KEEP PLAN &lt;/STRONG&gt;ή την &lt;STRONG&gt;KEEP FIXED PLAN &lt;/STRONG&gt;ώστε να ορίσω PLAN GUIDE μόνο για το δεύτερο select της sp?&lt;/P&gt;
&lt;P&gt;Θα μπορούσα αντίστοιχα να το κάνω για όλη τη procedure και πώς?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>