ID Artikel: 305977 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

INF: Pertanyaan yang sering diajukan - SQL Server 2000 - tabel variabel

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menjawab beberapa pertanyaan umum (FAQ) berkaitan dengan variabel meja yang diperkenalkan dalam SQL Server 2000.

Untuk membaca deskripsi SQL Server buku Online tabel variabel, kunjungi Web site Microsoft berikut:
.aspx http://msdn2.Microsoft.com/en-us/library/aa260638 (SQL.80) (http://msdn2.microsoft.com/en-us/library/aa260638(SQL.80).aspx)

INFORMASI LEBIH LANJUT

Q1: Mengapa meja variabel diperkenalkan ketika temporary tables sudah tersedia?

J1: Tabel variabel memiliki keuntungan berikut lebih sementara tabel:
  • Seperti disebutkan dalam SQL Server buku Online "Meja" Artikel, meja variabel, seperti variabel lokal, memiliki cakupan didefinisikan dengan baik pada akhir yang mereka secara otomatis dihapus.
  • Tabel variabel menghasilkan lebih sedikit recompilations dari disimpan prosedur dibandingkan dengan temporary tables.
  • Meja transaksi yang melibatkan variabel terakhir hanya untuk durasi update pada tabel variabel. Oleh karena itu, tabel variabel memerlukan kurang mengunci dan penebangan sumber daya. Karena tabel variabel telah membatasi ruang lingkup dan bukan merupakan bagian dari database gigih, transaksi rollbacks tidak mempengaruhi mereka.
P2: Apa artinya dengan mengatakan bahwa tabel variabel mengakibatkan lebih sedikit recompilations disimpan prosedur daripada ketika temporary tables digunakan?

A2: Artikel berikut membahas beberapa alasan ketika disimpan prosedur recompiled:

243586  (http://support.microsoft.com/kb/243586/ ) Pemecahan masalah disimpan prosedur recompilation
"Recompilations karena ke meja tertentu sementara Operasi"bagian juga mencantumkan beberapa persyaratan untuk menghindari seperti recompilation karena dari tabel sementara. Pembatasan ini tidak berlaku untuk Tabel variabel.

Tabel variabel benar-benar terisolasi untuk bets yang menciptakan mereka sehingga tidak sedang resolusi ' telah terjadi ketika membuat atau mengubah pernyataan berlangsung, yang mungkin terjadi dengan meja sementara. Temporary tables perlu ini sedang resolusi ' sehingga meja dapat dirujuk dari bersarang disimpan prosedur. Tabel variabel menghindari hal ini benar-benar sehingga dapat menggunakan prosedur yang tersimpan rencana yang sudah dikompilasi, sehingga menghemat sumber daya untuk proses yang disimpan prosedur.

Q3: Apa adalah beberapa kelemahan dari tabel variabel?

A3: Ini adalah beberapa kekurangan dibandingkan dengan tabel sementara:
  • Non-berkumpul indeks tidak dapat dibuat pada tabel variabel, lain dari sistem indeks yang dibuat untuk dasar atau unik kendala. Yang dapat mempengaruhi performa query bila dibandingkan dengan Sementara meja dengan non-berkumpul indeks.
  • Tabel variabel tidak mempertahankan statistik seperti sementara tabel dapat. Statistik tidak dapat dibuat pada tabel variabel melalui otomatis penciptaan atau dengan menggunakan statistik membuat pernyataan. Oleh karena itu, untuk kompleks pertanyaan pada tabel besar, kurangnya statistik dapat mencegah Pengoptimal untuk menentukan rencana terbaik untuk permintaan, sehingga mempengaruhi kinerja yang permintaan.
  • Definisi meja tidak dapat diubah setelah awal MENYATAKAN pernyataan.
  • Tabel variabel tidak dapat digunakan di masukkan EXEC atau pilih Ke dalam pernyataan.
  • Periksa kendala, nilai-nilai DEFAULT, dan kolom dihitung dalam deklarasi tipe tabel tidak dapat memanggil fungsi yang ditetapkan pengguna.
  • Anda tidak dapat menggunakan EXEC pernyataan atau sp_executesql disimpan prosedur untuk menjalankan query SQL Server dinamis yang mengacu Tabel variabel, jika variabel tabel dibuat di luar EXEC pernyataan atau The sp_executesql prosedur yang tersimpan. Karena tabel variabel dapat dirujuk dalam lokal mereka lingkup saja, pernyataan EXEC dan sp_executesql prosedur yang tersimpan akan di luar lingkup meja variabel. Namun, Anda dapat membuat tabel variabel dan melakukan semua proses dalam pernyataan EXEC atau sp_executesql disimpan prosedur karena maka meja variabel lokal lingkup dalam pernyataan EXEC atau sp_executesql prosedur yang tersimpan.
Q4: Adalah tabel variabel hanya memori struktur yang yakin performa yang lebih baik dibandingkan dengan tabel sementara atau permanen, karena mereka dipertahankan dalam database yang berada di disk fisik?

A4: Variabel tabel ini tidak hanya memori struktur. Karena meja variabel mungkin menyimpan lebih banyak data daripada yang dapat ditampung di memori, harus ada tempat disk untuk menyimpan data. Variabel tabel dibuat di Code database meja yang sama untuk sementara. Jika memori tersedia, keduanya meja variabel dan meja sementara dibuat dan diproses sementara di memori (data cache).

Q5: Apakah saya harus menggunakan tabel variabel bukannya tabel sementara?

A5: Jawabannya tergantung pada tiga faktor:
  • Jumlah baris yang dimasukkan untuk tabel.
  • Jumlah recompilations query disimpan dari.
  • Jenis pertanyaan dan mereka ketergantungan pada indeks dan Statistik untuk kinerja.
Dalam beberapa situasi, melanggar prosedur yang disimpan dengan sementara tabel ke kecil disimpan prosedur jadi recompilation yang berlangsung unit yang lebih kecil ini membantu.

Secara umum, Anda menggunakan tabel variabel bila memungkinkan kecuali jika ada volume yang signifikan data dan ada adalah penggunaan berulang-ulang meja. Dalam hal ini, Anda dapat membuat indeks Sementara tabel untuk meningkatkan kinerja permintaan. Namun, setiap skenario mungkin berbeda. Microsoft menganjurkan bahwa Anda menguji jika variabel meja lebih membantu daripada sementara tabel untuk query tertentu atau disimpan prosedur.

Tidak melihat jawaban untuk pertanyaan Anda? Kunjungi Microsoft SQL Server newsgroup pada: Microsoft SQL Server newsgroup (http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sqlserver.server)

Komentar tentang ini atau lain Artikel Basis Pengetahuan Microsoft SQL Server? Drop catatan pada SQLKB@Microsoft.com (mailto:sqlkb@microsoft.com)

Berlaku bagi:
  • Microsoft SQL Server 2000 Standard Edition
Kata kunci: 
kbinfo kbmt KB305977 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:305977  (http://support.microsoft.com/kb/305977/en-us/ )