sql >> Databasteknik >  >> RDS >> Sqlserver

SÄTT INGEN RÄKNING PÅ användning

Ok nu har jag gjort min research, här är affären:

I TDS-protokollet, SET NOCOUNT ON sparar bara 9-byte per fråga medan texten "SET NOCOUNT ON" i sig är hela 14 byte. Jag trodde att 123 row(s) affected returnerades från servern i vanlig text i ett separat nätverkspaket men så är inte fallet. Det är faktiskt en liten struktur som heter DONE_IN_PROC inbäddad i svaret. Det är inte ett separat nätverkspaket så inga tur- och returresor går till spillo.

Jag tror att du nästan alltid kan hålla fast vid standardbeteendet utan att oroa dig för prestandan. Det finns dock vissa fall där beräkning av antalet rader i förväg skulle påverka prestandan, till exempel en framåtriktad markör. I så fall kan NOCOUNT vara en nödvändighet. Utöver det finns det absolut inget behov av att följa mottot "använd NOCOUNT där det är möjligt".

Här är en mycket detaljerad analys om obetydlighet av SET NOCOUNT inställning:http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/



  1. Onlinemigrering från MySQL 5.6 Non-GTID till MySQL 5.7 med GTID

  2. Sammanfoga XMLType-noder i Oracle-fråga

  3. STRING_AGG() Funktion i PostgreSQL

  4. PDO-stöd för flera frågor (PDO_MYSQL, PDO_MYSQLND)