sql >> Databasteknik >  >> RDS >> Sqlserver

Varför anses det vara dålig praxis att använda markörer i SQL Server?

Eftersom markörer tar upp minne och skapar lås.

Vad du egentligen gör är att försöka tvinga uppsättningsbaserad teknik till icke-uppsättningsbaserad funktionalitet. Och i rättvisans namn bör jag påpeka att markörer gör har en användning, men de är ogillade eftersom många människor som inte är vana vid att använda uppsättningsbaserade lösningar använder markörer istället för att lista ut den uppsättningsbaserade lösningen.

Men när du öppnar en markör laddar du i princip in dessa rader i minnet och låser dem, vilket skapar potentiella block. Sedan, när du bläddrar genom markören, gör du ändringar i andra tabeller och håller fortfarande allt minne och alla lås för markören öppna.

Allt detta har potential att orsaka prestandaproblem för andra användare.

Så, som en allmän regel, är markörer ogillade. Speciellt om det är den första lösningen man kommit fram till för att lösa ett problem.



  1. Hur man använder PL/SQL Bulk Collect-klausul med FETCH INTO-utlåtande

  2. Hur infogar man en post och returnerar det nyskapade ID:t med ett enda SqlCommand?

  3. Exportera data till JSON-fil i Oracle 11g med PL/SQL

  4. Hur kan jag matcha de två sista orden i en mening i PostgreSQL?