Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Semua Medan Jadual Dengan Cekap Kecuali Lajur TEKS/BLOB Tertentu?
Mengoptimumkan Pendapatan Data: Tidak Termasuk Lajur TEXT/BLOB
Pernyataan SELECT *
mendapatkan semula semua lajur daripada jadual. Walau bagaimanapun, untuk kecekapan, terutamanya semasa penyahpepijatan, mengecualikan lajur TEXT atau BLOB yang besar selalunya bermanfaat.
*Ketiadaan Fungsi `PILIH KECUALI`**
Kebanyakan sistem pangkalan data hubungan (RDBMS) tidak mempunyai klausa SELECT * EXCEPT
terbina dalam. Ketiadaan ini boleh merumitkan pertanyaan apabila anda memerlukan semua lajur kecuali medan data yang besar dan khusus.
SQL Dinamik sebagai Penyelesaian
Walaupun SELECT * EXCEPT
langsung tidak wujud, SQL dinamik menyediakan penyelesaian. Ini melibatkan membina rentetan pertanyaan yang menyenaraikan secara eksplisit lajur untuk disertakan, dengan berkesan mengecualikan yang tidak diingini. Contoh berikut menunjukkan cara menjana pertanyaan secara dinamik tidak termasuk lajur 'huraian':
<code class="language-sql">DECLARE @sql VARCHAR(8000), @table_id INT, @col_id INT; SET @sql = 'SELECT '; SELECT @table_id = id FROM sysobjects WHERE name = 'MY_Table'; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND name <> 'description'; WHILE (@col_id IS NOT NULL) BEGIN SELECT @sql = @sql + name FROM syscolumns WHERE id = @table_id AND colid = @col_id; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND colid > @col_id AND name <> 'description'; IF (@col_id IS NOT NULL) SET @sql = @sql + ','; PRINT @sql; END; SET @sql = @sql + ' FROM MY_table'; EXEC (@sql);</code>
Kod ini membina pertanyaan yang menghilangkan 'huraian' daripada hasil 'MY_Table'.
Nota Keselamatan Penting: Walaupun berkesan, SQL dinamik memberikan risiko keselamatan. Pengesahan dan parameterisasi yang teliti adalah penting untuk mengelakkan kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Semua Medan Jadual Dengan Cekap Kecuali Lajur TEKS/BLOB Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!