Ada perdebatan di pekerjaan istri saya tentang hanya menggunakan varchar(255)
untuk semua varchar
bidang dalam tabel sementara dalam prosedur tersimpan. Pada dasarnya, satu kamp ingin menggunakan 255 karena akan selalu berfungsi bahkan jika definisi berubah, dan kamp lainnya ingin tetap dengan ukuran dalam tabel sumber untuk potensi peningkatan kinerja.
Apakah kamp pertunjukannya benar? Apakah ada implikasi lain? Mereka menggunakan SQL Server.
sql-server
performance
datatypes
temporary-tables
Brian Nickel
sumber
sumber
MAX()
dalam campuran.Jawaban:
Bergantung pada bagaimana Anda menggunakan tabel temp Anda, Anda bisa mengalami masalah pemotongan data.
Contoh ini sedikit dibuat-buat, tetapi menggambarkan poin saya. Contoh:
Tabel temp akan dengan senang hati menerima nilai varchar baru dengan panjang 59. Namun, tabel pengguna Anda tidak bisa. Bergantung pada bagaimana Anda menangani ini dalam prosedur Anda, ini dapat mengakibatkan pemotongan atau kesalahan.
Kecuali jika Anda mendokumentasikan dan menjelaskan masalah ini, prosedur Anda dapat melakukan hal yang tidak terduga.
Secara pribadi, saya tidak berpikir ada jawaban untuk pertanyaan ini yang benar 100% dari waktu. Itu benar-benar tergantung pada bagaimana Anda menggunakan tabel temp tersebut.
Semoga ini membantu
sumber
Saya akan condong ke arah penggunaan panjang bidang yang sebenarnya.
Saya membaca baru-baru ini bahwa MySQL (saya berasumsi SQL Server serupa) tabel temp mengalokasikan cukup memori untuk menyimpan panjang maksimum yang mungkin untuk setiap
varchar
kolom ... Pendekatan sistematis untuk mengalokasikan 200% -500% dari memori yang diperlukan untukvarchar
bidang dalam semua prosedur tersimpan tampaknya seperti undian yang tidak perlu pada sumber daya sistem. Jika Anda pernah menggunakan sejumlah besar memori membuat tabel temp ini maka Anda bisa mengklaim memori yang tidak perlu yang digunakan untuk caching, menciptakan lebih banyak pekerjaan untuk server di beberapa titik di masa depan, bahkan setelah prosedur store selesai.Sunting: Lihat jawaban Bill Karwin: /programming/1962310/importance-of-varchar-length-in-mysql-table
sumber