Makale numarası: 305977 - Son Gözden Geçirme: 29 Mart 2007 Perşembe - Gözden geçirme: 6.3

INF: Sık - SQL Server 2000 - tablo değişkenleri sorulan sorular

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, bazı sık sorulan sorular yanıtlanmaktadır (SSS) SQL Server 2000'de sunulan tablo değişkenleri ilgili.

SQL Server Books Online'da Tablo değişkenlerini açıklamasını okumak için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/aa260638(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa260638(SQL.80).aspx)

Daha fazla bilgi

S1: geçici tablolara zaten kullanılabilen zaman Tablo değişkenlerini neden başlanan?

A1: Tablo değişkenlerini geçici tablolara göre aşağıdaki avantajları vardır:
  • SQL Server Books Online'da "Tables" makalesinde belirtildiği gibi yerel değişkenleri gibi Tablo değişkenlerini sonunda, bunlar otomatik olarak temizlenir, iyi tanımlanmış bir kapsamı vardır.
  • Tablo değişkenlerini bir saklı yordam geçici tablolar karşılaştırıldığında daha az yeniden neden.
  • Tablo değişkenlerini yalnızca bir tablo değişkeni güncelleştirme süresi için son ilgili hareketleri. Bu nedenle, daha az kilitleme ve kaynaklar için günlüğe kaydetme Tablo değişkenlerini gerektirir. Tablo değişkenlerini kapsamı sınırlı ve veritabanına kalıcı bir parçası değildir çünkü işlem Al bunları etkilemez.
S2: ne, Tablo değişkenlerini geçici tablolar kullanıldığında çok daha az yeniden bir saklı yordamın sonuç diyerek geliyor?

A2: Saklı yordamlar, derlenmiş çekirdekler, aşağıdaki makalede nedenlerinden bazıları anlatılmaktadır:

243586  (http://support.microsoft.com/kb/243586/ ) Saklı yordamın recompilation sorun giderme
"Yeniden Due to belirli geçici tablo işlem" bölümü de nedeniyle geçici bir tablo gibi bir recompilation önlemek için bazı listelenmektedir. Bu kısıtlamalar tablo değişkenleri için geçerli değildir.

Tablo değişkenlerini dolayısıyla olduğunuz çözümlemesi bunları oluşturan toplu iş tamamen ayrılmış ' CREATE veya ALTER bir deyimi, geçici bir tablo ile birlikte ortaya çıkabilir, gerçekleştiğinde gerçekleşmesi gerekir. Geçici tablolara bu olduğunuz çözümlemesi gerekir. '; Bu nedenle, tablo, iç içe geçmiş bir saklı yordam başvurulabilir. Tablo değişkenlerini saklı yordamlar, zaten, bu nedenle saklı yordam işlemek için kaynak kaydetme derlendi planı kullanabilirsiniz; böylece bu tamamen kaçının.

Q3: Bazı tablo değişkenlerinin dezavantajları nelerdir?

A3: Bazı geçici tablolar karşılaştırıldığında dezavantajları şunlardır:
  • Olmayan kümelenmiş dizinler üzerinde farklı bir PRIMARY veya BENZERSIZ kısıtlama için oluşturulan sistem dizinleri, Tablo değişkenlerini oluşturulamıyor. Geçici tabloya kümelenmemiş dizin ile karşılaştırıldığında sorgu performansı etkileyebilirsiniz.
  • Tablo değişkenlerini geçici tablo kutusu gibi bir istatistik bakımını. Istatistikleri otomatik oluşturulması veya STATISTICS CREATE deyimi kullanarak Tablo değişkenlerini üzerinde oluşturulamaz. Önüne bu nedenle, büyük tablolarda karmaşık sorgular için istatistikleri olmamasından böylece sorgu performansı etkileyen bir sorgu için en iyi bir plan belirlemek için en iyi duruma getiricisi geçilmesine.
  • Tablo tanımı ilk DECLARE ifadenin değiştirilemez.
  • Tablo değişkenleri EXEC INSERT veya SELECT INTO deyiminde kullanılamaz.
  • Kullanıcı tanımlı işlevler, CHECK kısıtlamaları, VARSAYıLAN değerler ve hesaplanan sütunlar tablo türü bildirimindeki çağrılamıyor.
  • EXEC deyimi veya sp_executesql saklı yordamı, tablo değişkeni EXEC deyimi veya sp_executesql depolanmış yordamın dışında oluşturulmuşsa, bir tablo değişkeni başvuran bir dinamik SQL sorgusuna çalıştırmak için kullanamazsınız. Tablo değişkenlerini yerel kapsamı yalnızca, bir EXEC deyimi ve sp_executesql depolanan başvurulan olduğundan yordamın kapsamı dışında bir tablo değişkeni olacaktır. Ancak, tablo değişkeni oluşturun ve EXEC deyimi içindeki tüm işlem gerçekleştirmek veya çünkü saklı yordamını sp_executesql sonra yerel kapsamdır EXEC deyimi veya sp_executesql Tablo değişkenlerini saklı yordamını.
S4: fiziksel disk üzerindeki bir veritabanında tutulan olduğundan Tablo değişkenlerini, tablolar, geçici veya kalıcı karşılaştırıldığında daha iyi başarım yararlandığından emin yalnızca bellek yapılarını misiniz?

A4: Bir tablo değişkeni, bir bellek Salt Yapı değil. Bir tablo değişkeni belleğe sığabilecek olandan daha fazla veri basılı, çünkü verileri depolamak için disk üzerindeki bir yer vardır. Tablo değişkenlerini geçici tablolara benzer tempdb veritabanında oluşturulur. Bellek varsa, her iki değişken tablo ve geçici bir tablo oluşturulur ve bellekte (veri önbelleği) işlendi.

S5: Tablo değişkenlerini geçici tablolar yerine kullanılacak var MIYIM?

A5: Yanıt, bu üç etkene bağlıdır:
  • Tabloya eklenen satır sayısı.
  • Yeniden kaydedilen sorgu sayısı.
  • Sorgular ve bunların dizinler ve performans istatistiklerini bağımlı türü.
Bazı durumlarda, daha küçük bir birim üzerinde recompilation gerçekleştiğinde, geçici tablo ile bir saklı yordam saklı yordamlar daha küçük kesiliyor yararlıdır.

Tablo değişkenlerini dışında olabildiğince genel olarak, kullandığınız veri önemli bir birimi vardır ve yinelenen bir tabloda kullanımını yoktur. Bu durumda, sorgu performansını artırmak için geçici tablo dizinler oluşturabilirsiniz. Ancak, her bir senaryo farklı olabilir. Microsoft, Tablo değişkenlerini geçici tablolar için belirli bir sorgu veya saklı yordam daha yararlı sınamanızı önerir.

Sorunuza yanıt vermedi görüyor musunuz? Adresindeki Microsoft SQL Server haber grupları'nı ziyaret edin: Microsoft SQL Server Newsgroups (http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sqlserver.server)

Bu veya başka Microsoft SQL Server Bilgi Bankası makaleleri hakkında görüşünüzü bildirmek ister misiniz? Bize Not SQLKB@Microsoft.com (mailto:sqlkb@microsoft.com) bırak

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbfaq kbinfo KB305977 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:305977  (http://support.microsoft.com/kb/305977/en-us/ )