Rumah >pangkalan data >tutorial mysql >Bagaimanakah Parameter Bernilai Jadual Boleh Meningkatkan Kecekapan Apabila Menyalurkan Berbilang Item kepada Prosedur Tersimpan SQL?

Bagaimanakah Parameter Bernilai Jadual Boleh Meningkatkan Kecekapan Apabila Menyalurkan Berbilang Item kepada Prosedur Tersimpan SQL?

Barbara Streisand
Barbara Streisandasal
2024-12-30 04:48:39231semak imbas

How Can Table-Valued Parameters Improve Efficiency When Passing Multiple Items to SQL Stored Procedures?

Menjinakkan Prosedur Tersimpan dengan Parameter Bernilai Jadual

Masalah:
Memindahkan berbilang item ke satu rekod pangkalan data dengan cekap kekal sebagai cabaran berterusan . Sebagai contoh, memberikan berbilang item kepada laporan memerlukan pengemaskinian jadual ReportItems dengan berbilang rekod. Pendekatan konvensional melibatkan kod kompleks dan fungsi tambahan untuk memproses senarai item sebagai rentetan.

Menyingkap Penyelesaian yang Lebih Baik

Dengan kemunculan SQL Server 2008, "Parameter bernilai jadual" memperkenalkan penyelesaian terobosan untuk teka-teki ini.

Keajaiban TVP:
Parameter bernilai jadual membolehkan anda menghantar struktur seperti jadual sebagai parameter kepada prosedur tersimpan. Dalam kes kami, kami boleh mentakrifkan TVP untuk menerima jadual ID item integer.

Kod Disemak:
Kod yang disemak menjadi lebih ringkas:

public void AddItemsToReport(string connStr, int Id, List<int> itemList)
{
    Database db = DatabaseFactory.CreateDatabase(connStr);

    string sqlCommand = "AddItemsToReport"
    DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);

    // Convert the list to a DataTable (lightweight)
    DataTable table = itemList.ToDataTable();

    // Create the TVP parameter
    db.AddParameter(dbCommand, "Items", table);

    // Execute the stored procedure
    db.ExecuteNonQuery(dbCommand);
}

Prosedur Tersimpan yang Dipertingkatkan:
Prosedur tersimpan memudahkan lagi:

INSERT INTO ReportItem (ReportId,ItemId)
SELECT  @ReportId,
          Id
FROM     @Items

Kesimpulan:
Parameter bernilai jadual menawarkan mekanisme yang elegan dan cekap untuk memindahkan berbilang item ke prosedur tersimpan SQL. Dengan menghapuskan keperluan untuk manipulasi rentetan kompleks dan fungsi tambahan, TVP menyelaraskan proses pembangunan dan meningkatkan kebolehbacaan kod.

Atas ialah kandungan terperinci Bagaimanakah Parameter Bernilai Jadual Boleh Meningkatkan Kecekapan Apabila Menyalurkan Berbilang Item kepada Prosedur Tersimpan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn