1) Ano , vyberte pomocí NOLOCK
dokončí se rychleji než normální výběr.
2) Ano , vyberte pomocí NOLOCK
umožní ostatním dotazům proti ovlivněné tabulce dokončit rychleji než normální výběr.
Proč by tomu tak bylo?
NOLOCK
obvykle (v závislosti na vašem DB motoru) znamená, že mi dáte svá data a je mi jedno, v jakém stavu jsou, a neobtěžujte se je držet v klidu, když z nich čtete. Je to všechno najednou rychlejší, méně náročné na zdroje a velmi velmi nebezpečné.
Měli byste být varováni, abyste nikdy neprováděli aktualizaci nebo neprováděli nic kritického pro systém nebo kde je vyžadována absolutní správnost s použitím dat pocházejících z NOLOCK
číst. Je zcela možné, že tato data obsahují řádky, které byly odstraněny během běhu dotazu nebo které byly odstraněny v jiných relacích, které ještě nebyly dokončeny. Je možné, že tato data obsahují řádky, které byly částečně aktualizovány. Je možné, že tato data obsahují záznamy, které porušují omezení cizího klíče. Je možné, že tato data nezahrnují řádky, které byly přidány do tabulky, ale ještě nebyly potvrzeny.
Ve skutečnosti nemáte žádný způsob, jak zjistit, jaký je stav dat.
Pokud se snažíte získat věci, jako je počet řádků nebo jiná souhrnná data, kde je přijatelná určitá míra chyby, pak NOLOCK
je dobrý způsob, jak zvýšit výkon těchto dotazů a vyhnout se jejich negativnímu dopadu na výkon databáze.
Vždy používejte NOLOCK
naznačujte velmi opatrně a zacházejte se všemi daty, která vrátí, podezřele.