@table_variable veya #temp_table


11

129 sütun olan büyük bir kullanıcı tanımlı tablo türü değişkeni var. Bir seferde bu tablo değişkeninde yaklaşık 2000-3000 kayıt saklayacağım ve ek veri almak ve değişiklikler yapmak için çeşitli saklı yordamlara ve işlevlere geçireceğim. Bu ek veriler ve yeni değişiklikler daha sonra aynı tipte yeni bir tablo değişkeninde saklanacak ve bir OUTPUTparametre yoluyla kaynak saklı yordamına geri dönecektir . (Bunun nedeni, bir tablo türü parametresinin yalnızca olarak geçirilebilmesidir READONLY.)

Bu benim sahte kod:

  SP1
  @tmp tableType
  {
        INSERT @tmp EXEC
        SP2 (@tmp)

        INSERT @tmp EXEC
        SP3 (@tmp)
  }

A @table_variableveya #temp_tablemı kullanmalıyım ?


Yanıtlar:


12

Bakmanız gereken iki blog var. İlk ( burada ) Tablo Değişkenleri ve Sıcaklık Tablolarının karşılaştırmasıdır. 2008'den beri ve SQL Server 2008 R2 ile alakalı olmaya devam ediyor.

İkinci blog girişi ( burada ), Tablo Değişkenleri ile ilgili bazı yanılgıları (kaçırılan kavramlar) ele almaktadır; bir Tablo Değişkeni indeksleme dahil.

Bu blog girişlerinin her ikisi de makaleleri Gail Shaw tarafından yazılmıştır.

Aradığınız bir söyleyen öğenin bir Tablo Değişkeni saklı yordamlar arasında geçirilebilirken bir Temp Tablosu saklı yordamlar arasında geçirilebileceğine inanıyorum. Bir Tablo Değişkeni, saklı yordamlar arasında geçişe en yakın Kullanıcı Tanımlı Tablo Türü gibidir.

Tablo Değişkeni'ni TVP olarak saklı bir prosedüre geçirmek için bunun READ-ONLY parametresi olarak tanımlanması gerekir. Bu, değiştirilmiş bir kopyasını döndürmek istiyorsanız Tablo Değişkeni'nin birden çok kopyası olacağını gösterir.

Tüm söylenen, saklı yordam arasında geçiş bir geçici tablo tarafından geçirilen yapıyı güncelleştirilmiş değerlerle döndürmek istediğinizde daha iyi sunulabilir.


5

Her ikisini de denemekten daha iyi bir şey yok, ancak yüzlerce kayda girdikten sonra #tempTables'ın daha iyi performans gösterdiğini görüyorum.


3
Buna ek olarak, geçici tabloların dizinlere sahip olabileceği, istatistiklere sahip olabileceği ve tablo değişkenlerinin yalnızca bir PK olabileceği gerçeğini ekleyin. Burada bazı ayrıntılarınız var .
Marian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.