Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Препоръчайте използването на временна таблица или променлива на таблица в Entity Framework 4. Актуализирайте Performance Entity framework

За обеми от данни като 300k редове бих забравил EF. Бих направил това, като имам таблица като:

BatchId  RowId

Където RowId е PK на реда, който искаме да актуализираме, а BatchId просто препраща към това „изпълнение“ от 300 000 реда (за да позволим няколко наведнъж и т.н.).

Бих генерирал нов BatchId (това може да е нещо уникално - Guid се сещам) и бих използвал SqlBulkCopy, за да вмъкна записи в тази таблица, т.е.

100034   17
100034   22
...
100034   134556

След това бих използвал обикновен sproc, за да направя присъединяването и актуализирането (и да изтрия партидата от таблицата).

SqlBulkCopy е най-бързият начин за получаване на този обем от данни на сървъра; няма да се удавиш в отиване и връщане. EF е обектно-ориентиран:подходящ за много сценарии - но не и за този.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо не мога да направя заявка OFFSET/FETCH на моя SQL Server?

  2. Създаване на изчислена колона в SQL Server 2008

  3. оптимизирайте заявката за най-близък съсед на 70 милиона пространствени облака от точки с изключително висока плътност на SQL Server 2008

  4. Възможно ли е да се използват дефинирани от потребителя агрегати (clr) с функции на прозореца (над)?

  5. Причини за надстройка до SQL Server 2017