Microsoft KB Archive/299950

From BetaArchive Wiki
Knowledge Base


Article ID: 299950

Article Last Modified on 10/15/2002



APPLIES TO

  • Microsoft SQL Server 7.0 Standard Edition



This article was previously published under Q299950

BUG #: 101678 (SQLBUG_70)

SYMPTOMS

A slower than optimum join strategy is chosen for the join of two tables.

The STATISTICS PROFILE output for the problem query indicates that the estimated number of rows (as indicated by the EstimateRows column) to be output by a given join operation is significantly lower than the actual number of rows output by the join (as indicated by the Rows column).

CAUSE

In some instances, the maximum value for a given column is not represented in the histogram steps of the statistical information stored for a given column.

In certain cases (like an equi-join of two columns), the ranges of values stored in the statistical histogram are compared in an attempt to estimate the number of rows that are to be output by a given join operation. In the special case where the maximum value is also a frequent value in the table being joined to, the optimizer under costs the join.

RESOLUTION

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 7.0. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

301511 INF: How to Obtain the Latest SQL Server 7.0 Service Pack


NOTE: The following hotfix was created prior to Microsoft SQL Server 7.0 Service Pack 4.

The English version of this fix should have the following file attributes or later:

   File name     Platform
   ----------------------

   s70996i.exe   Intel
   s70996a.exe   Alpha
   
                

NOTE: Because of file dependencies, the most recent hotfix or feature that contains the preceding files may also contain additional files.


WORKAROUND

Use a join hint to force a more efficient join strategy.

Please exercise caution when you force a join strategy for two tables through a join hint. If a join hint is specified for any two tables, the query optimizer automatically enforces the join order for all joined tables in the query, based on the position of the ON keywords.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft SQL Server 7.0 Service Pack 4.

MORE INFORMATION

After you apply this fix, you must update the statistics for the table that was affected by this problem. This step is necessary to realize the benefit of this fix.

For more information regarding how to update the statistics for a given table, refer to the "UPDATE STATISTICS (T-SQL)" topic in SQL Server 7.0 Books Online.

Note that if AUTO UPDATE STATISTICS is enabled for the database, the problem should be corrected automatically the next time the statistics are updated for the problem table.


Additional query words: slow statistics performance

Keywords: kbbug kbfix KB299950