sql >> Databáze >  >> RDS >> Sqlserver

Parametr nefunguje tak dobře jako pevné kódování hodnoty

UPRAVIT SOUHRN Na žádost Damien_The_Unbeliever

Cílem je získat nejlepší/největší informace o hodnotě proměnné do SQL PŘED vytvořením plánu, obecně to dělá sniffování parametrů. Může existovat důvod, proč bylo sledování parametrů v tomto případě „zakázáno“. Bez lepšího znázornění skutečného kódu nemůžeme skutečně říci, jaké je řešení nebo proč problém existuje. Vyzkoušejte níže uvedené věci, abyste přinutili postižené oblasti generovat plány pomocí skutečných hodnot.

*DLOUHÁ VERZE S VÍCE PODROBNOSTÍ *

Je to váš skutečný uložený proces? Máte výchozí hodnoty pro vaše parametry? Pokud ano, jaké to jsou?

Sniffing parametrů může pomoci – ale musí mít typické hodnoty parametrů, aby byl plán dobře vytvořen, a pokud ne, ve skutečnosti nepomůže nebo vytvoří špatný plán založený na netypické hodnotě parametru. Pokud má tedy proměnná při prvním spuštění a kompilaci plánu výchozí hodnotu null nebo hodnotu, která není typickou hodnotou, vytvoří špatný plán.

Pokud někdo jiný napsal tento sproc - možná z nějakého důvodu záměrně "zakázal" sniffování parametrů s místními proměnnými. Obchodní pravidla mohou vyžadovat tyto variabilní struktury.

Cílem je získat nejlepší/většinu informací o hodnotě proměnné do SQL PŘED vytvořením plánu a obecně to dělá Parameter Sniffing. Existují však věci, které mohou negativně ovlivnit výkon, a to může být důvod, proč je „deaktivován“. Stále se zdá, že plán je vytvářen s atypickými hodnotami parametrů nebo stále není dostatek informací - pomocí čichání parametrů nebo ne.

Zkuste zavolat dotaz uvnitř sproc pomocí Use sp_executesql k provedení dotčených dotazů, vynutíte jej, aby vygeneroval plán pro danou oblast se skutečnými proměnnými, a zjistěte, zda je to lepší. Toto může být vaše řešení, pokud musíte mít tento druh nepravidelné hodnoty parametru – vytvořte uložené procesy, které spouštějí postižené části a zavolají je později z uložené procedury – poté, co proměnná obdrží typickou hodnotu.

Bez lepšího znázornění skutečného kódu je těžké zjistit, v čem je problém. Snad vám tato informace pomůže –



  1. Kdy zvážit Solr

  2. Předejte klíče a hodnoty pole Mysql Query String

  3. Ovlivňuje server proxy RDS aktuální sdružování na straně aplikace?

  4. V úložišti databáze RDS dochází místo