sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor anses det for dårlig praksis at bruge markører i SQL Server?

Fordi markører optager hukommelse og skaber låse.

Det, du virkelig gør, er at forsøge at tvinge sæt-baseret teknologi ind i ikke-sæt-baseret funktionalitet. Og i al retfærdighed bør jeg påpege, at markører gør har en brug, men de er ilde set, fordi mange mennesker, der ikke er vant til at bruge sæt-baserede løsninger, bruger markører i stedet for at finde ud af den sæt-baserede løsning.

Men når du åbner en markør, indlæser du dybest set disse rækker i hukommelsen og låser dem, hvilket skaber potentielle blokke. Så, mens du cykler gennem markøren, foretager du ændringer i andre tabeller og holder stadig hele markørens hukommelse og låse åbne.

Alt dette har potentialet til at forårsage ydeevneproblemer for andre brugere.

Så som en generel regel er markører ilde set. Især hvis det er den første løsning, der er fundet til at løse et problem.



  1. UPSERT til tabel med dynamisk tabelnavn

  2. MySQL - tving til ikke at bruge cache til at teste forespørgselshastigheden

  3. Sådan installeres MySQL Workbench på Ubuntu

  4. Talk-dias:Partitioneringsforbedringer i PostgreSQL 11