Ada beberapa implikasi kinerja, versi baris hanyalah nama baru untuk tipe data stempel waktu lama. Jadi database Anda perlu menyimpan bidang biner tambahan. Performa Anda akan jauh lebih buruk saat Anda mencoba melakukan kueri pada data ini seperti:
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion
Yang merupakan cara umum yang dapat digunakan untuk mendapatkan daftar item yang diperbarui sejak @rowVersion terakhir. Ini terlihat bagus dan akan berfungsi sempurna untuk tabel dengan katakanlah 10.000 baris. Tetapi ketika Anda mencapai 1 juta baris, Anda akan segera menemukan bahwa ia selalu melakukan pemindaian tabel dan pencapaian kinerja Anda adalah karena tabel Anda sekarang tidak lagi muat sepenuhnya di dalam RAM server.
Ini adalah masalah umum yang dihadapi dengan rowVersion
kolom, itu tidak secara ajaib diindeks sendiri. Juga, ketika Anda mengindeks kolom rowVersion Anda harus menerima bahwa indeks akan sering menjadi sangat terfragmentasi dari waktu ke waktu, karena nilai baru yang diperbarui akan selalu berada di bagian bawah indeks, meninggalkan celah di seluruh indeks saat Anda memperbarui item yang ada .
Sunting:Jika Anda tidak akan menggunakan rowVersion
bidang untuk memeriksa item yang diperbarui dan sebagai gantinya Anda akan menggunakannya untuk konsistensi untuk memastikan bahwa catatan tidak diperbarui sejak Anda terakhir membaca, maka ini akan menjadi penggunaan yang dapat diterima dan tidak akan berdampak.
UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion