Résumé
Cette mise à jour introduit un nouvel argument d’indicateur de requête, USE HINT, qui vous permet de piloter l’optimiseur de requête sans informations d’identification élevées ou sans être membre du rôle serveur sysadmin. La syntaxe de ce nouvel indicateur de requête est la suivante :
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Cette mise à jour introduit également les options d’indicateur suivantes qui peuvent être utilisées avec l’argument USE HINT.
| Option | Indicateur de trace équivalent | Description | Produits concernés |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Amène SQL Server à générer un plan de requête à l’aide de l’hypothèse de confinement simple au lieu de l’hypothèse de confinement de base par défaut pour les jointures, sous le modèle d’estimation de cardinalité de l’optimiseur de requête de SQL Server 2014 (12.x) ou version ultérieure. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Amène SQL Server à générer un plan en utilisant une sélectivité minimale lors de l’estimation ET des prédicats pour les filtres pour tenir compte de la corrélation. Ce nom d’indicateur est parallèle à l’indicateur de trace 4137 lorsqu’il est utilisé avec le modèle d’estimation de cardinalité de SQL Server 2012 (11.x) et versions antérieures, et a un effet similaire lorsque l’indicateur de trace 9471 est utilisé avec le modèle d’estimation de cardinalité de SQL Server 2014 (12.x) ou version ultérieure. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Désactive les jointures adaptatives en mode batch. | à partir de SQL Server 2017 | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Désactive les commentaires d’allocation de mémoire en mode batch. | à partir de SQL Server 2017 | |
| DISABLE_DEFERRED_COMPILATION_TV | Désactive la compilation différée des variables de table. | à partir de SQL Server 2019 | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Désactive l’exécution entrelacée pour les fonctions table à plusieurs instructions. | à partir de SQL Server 2017 | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Indique au processeur de requêtes de ne pas utiliser d’opération de tri (tri par lots) pour les jointures de boucles imbriquées optimisées lors de la génération d’un plan de requête. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Amène SQL Server à générer un plan qui n’utilise pas les modifications d’objectif de ligne avec les requêtes qui contiennent les mots clés suivants :
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Indique à l’optimiseur de requête d’utiliser la distribution moyenne des données lors de la compilation d’une requête avec un ou plusieurs paramètres. Cette instruction rend le plan de requête indépendant de la valeur de paramètre qui a été utilisée pour la première fois lors de la compilation de la requête. Utilisez cet indicateur pour remplacer le paramètre de configuration étendue par base de données PARAMETER_SNIFFING=OFF. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Désactive les commentaires d’allocation de mémoire en mode ligne. | à partir de SQL Server 2019 | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Désactive le calcul scalaire du contenu UDF. | à partir de SQL Server 2019 | |
| DISALLOW_BATCH_MODE | Désactive l’exécution en mode batch. | à partir de SQL Server 2019 | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Active la génération automatique de statistiques rapides (modification d’histogramme) pour toute colonne d’index principale pour laquelle l’estimation de la cardinalité est nécessaire. L’histogramme utilisé pour estimer la cardinalité sera ajusté au moment de la compilation de la requête pour prendre en compte la valeur maximale ou minimale réelle de cette colonne. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Active les correctifs logiciels de l’optimiseur de requête (modifications publiées dans SQL Server Mises à jour cumulative et Service Packs). Utilisez cet indicateur pour remplacer le paramètre de configuration étendue par base de données QUERY_OPTIMIZER_HOTFIXES=ON. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Force l’optimiseur de requête à utiliser un modèle d’estimation de la cardinalité qui correspond au niveau de compatibilité de la base de données actuel. Utilisez cet indicateur pour remplacer le paramètre de configuration étendue par base de données LEGACY_CARDINALITY_ESTIMATION=ON. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Force l’optimiseur de requête à utiliser le modèle d’estimation de la cardinalité de SQL Server 2012 (11.x) et versions antérieures. Utilisez cet indicateur pour remplacer le paramètre de configuration étendue par base de données LEGACY_CARDINALITY_ESTIMATION=ON. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Force le comportement de l’optimiseur de requête au niveau de la requête. Ce comportement se produit comme si la requête a été compilée avec le niveau de compatibilité de base de données n, où n est un niveau de compatibilité de base de données pris en charge. Reportez-vous à sys.dm_exec_valid_use_hints pour obtenir la liste des valeurs actuellement prises en charge pour n. | à partir de SQL Server 2017 (14.x) CU10 |
Pour plus d’informations, reportez-vous à la rubrique Conseils (Transact-SQL) - Requête.
Informations supplémentaires
Cette mise à jour est incluse dans le Service Pack 1 pour SQL Server 2016.
À propos des builds de SQL Server 2016
Chaque nouvelle version de SQL Server 2016 contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente. Nous vous recommandons d’installer la dernière version de SQL Server 2016.
Les scénarios dans lesquels SQL Server comportement de l’optimiseur de requête (QO) doit être indiqué sont assez courants et sont traditionnellement résolus à l’aide de plusieurs indicateurs de trace (documentés et non documentés). Toutefois, lorsque les indicateurs de trace sont définis globalement, ils peuvent avoir un effet négatif sur d’autres charges de travail. De plus, leur activation par session n’est pas pratique avec les applications existantes, et leur activation par requête avec OPTION QUERYTRACEON nécessite l’appartenance au rôle de serveur fixe sysadmin. (Bien que vous puissiez contourner ce comportement à l’aide d’un guide de plan ou d’une procédure stockée, des informations d’identification élevées sont toujours nécessaires.)
Les indicateurs de trace sont utilisés pour définir temporairement des caractéristiques de serveur spécifiques ou pour désactiver un comportement particulier. Ils peuvent être difficiles à gérer et à comprendre.
Pour plus d’informations sur les indicateurs de trace, reportez-vous à la rubrique Indicateurs de trace (Transact-SQL) sur le site web MSDN (Microsoft Developer Network).
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.